Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как запустить EXE [C# .NET] из ядра на MFC 
:(
    Опции темы
LectorSP
Дата 11.5.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



помогите пожалуйста. возникла такая проболем...мне надо запустить написанный мною EXE файл [C# .NET] из кода на С++ (MFC)

MFC Я знаю очень слабо, весьма поверхностоно, ничего не писал. Имел дело с MFC, только когда переписывал некоторый функционал под .NET. если не сложно, приведите пожалуйста пример.   
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
zkv
Дата 11.5.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(LectorSP @  11.5.2007,  17:08 Найти цитируемый пост)
приведите пожалуйста пример.

Код

ShellExecute(NULL, "open", "path_to_exe_file", NULL, NULL, SW_SHOWNORMAL);

PM MAIL   Вверх
Rapalex
Дата 11.5.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



МФЦ тут не причём, винда есть.

Ты CreateProcess пробывал?

Например так:
Код

    STARTUPINFO sStartUp;
    ZeroMemory(&sStartUp, sizeof(STARTUPINFO));
    sStartUp.cb = sizeof(STARTUPINFO);
    sStartUp.dwFlags = STARTF_USESHOWWINDOW;
    sStartUp.wShowWindow = SW_SHOWNORMAL;

    PROCESS_INFORMATION sPI;

    CString strCommand = _T("notepad.exe");
    CreateProcess(
        NULL,                    // lpApplicationName
        strCommand.GetBuffer(),        // lpCommandLine
        NULL,                    // lpProcessAttributes
        NULL,                    // lpThreadAttributes
        FALSE,                    // bInheritHandles
        NORMAL_PRIORITY_CLASS,        // dwCreationFlags
        NULL,                    // lpEnvironment
        NULL,                    // lpCurrentDirectory,
        &sStartUp,                // lpStartupInfo,
        &sPI                    // lpProcessInformation
    );



--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
LectorSP
Дата 11.5.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



не знаю почему, но CreateProcess всегда возвращает FALSE,  ShellExecute() тоже не запускает.

--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
zkv
Дата 11.5.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(LectorSP @  11.5.2007,  18:05 Найти цитируемый пост)
не знаю почему, но CreateProcess всегда возвращает FALSE,  ShellExecute() тоже не запускает.

код пожалуйста, про экранирующие слеши в пути не забыли? типа ShellExecute(NULL, "open", "C:\\catalog\\exe_file.exe", NULL, NULL, SW_SHOWNORMAL);

Это сообщение отредактировал(а) zkv - 11.5.2007, 18:22
PM MAIL   Вверх
Любитель
Дата 12.5.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 7
Всего: 92



Если апишная функция не срабатывает - всгеда в первую очередь смотрим GetLastError. По-моему, стандартно smile


--------------------
PM MAIL ICQ Skype   Вверх
LectorSP
Дата 14.5.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



Все работает, но такой вопрос... сам EXE фаил работает нормально, но когда его запускаешь через CreateProcess или ShellExecute, он перестает видеть все относительные пути указанные внутри....
может их надо задавать относительно того, откуда вызывается CreateProcess или ShellExecute ?
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
zkv
Дата 14.5.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(LectorSP @  14.5.2007,  10:42 Найти цитируемый пост)
Все работает, но такой вопрос... сам EXE фаил работает нормально, но когда его запускаешь через CreateProcess или ShellExecute, он перестает видеть все относительные пути указанные внутри....
может их надо задавать относительно того, откуда вызывается CreateProcess или ShellExecute ? 

не помню какая точно, но есть функция которая позволяет менять текущую рабочую директорию (вроде так называется)
PM MAIL   Вверх
Rapalex
Дата 14.5.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



У функции CreateProcess есть входной параметр:
Цитата

lpCurrentDirectory 

[in] Pointer to a null-terminated string that specifies the full path to the current directory for the process. The string can also specify a UNC path. 
If this parameter is NULL, the new process will have the same current drive and directory as the calling process. (This feature is provided primarily for shells that need to start an application and specify its initial drive and working directory.)


Походу это оно и есть.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
LectorSP
Дата 14.5.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



Всем огромное спасибо. Все работает так как надо.
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.