Открытие нового процесса из MFC UI - PullRequest
0 голосов
/ 16 ноября 2018

Я разработал пользовательский интерфейс с использованием Visual C ++, тип приложения основан на диологии.

Для выполнения другого приложения (CLI) из моего пользовательского интерфейса я использовал функцию ShellExecute (). Это приложение завершает свою работу и исчезает при выполнении кода в моем пользовательском интерфейсе.

Со стороны пользовательского интерфейса, как узнать, успешно ли приложение выполнило свою работу?

Может ли кто-нибудь помочь в реализации связи между кодом My visual C ++ и другим сторонним приложением, открывающимся из этого кода.

Вот мой фрагмент кода для выполнения приложения,

CString cmd = "/C command parameters";
HINSTANCE hinst = ShellExecute(0, "open", "bin\\My application.exe", cmd, 0, SW_SHOW);

В My application.exe будет печать «успешно» в последней строке, если она прошла успешно, есть ли способ прочитать строки со стороны пользовательского интерфейса.

1 Ответ

0 голосов
/ 16 ноября 2018

Возвращаемое значение может быть приведено к int.

Тип: HINSTANCE

Если функция завершается успешно, она возвращает значение больше 32. Если функция завершается ошибкой, она возвращает значение ошибки, которое указываетпричина неудачи.Возвращаемое значение приводится как HINSTANCE для обратной совместимости с 16-битными приложениями Windows.Однако это не истинное препятствие.Его можно привести только к типу int и сравнить с 32 или следующими кодами ошибок ниже.

Код возврата Описание
0 В операционной системе недостаточно памяти или ресурсов.
ERROR_FILE_NOT_FOUNDУказанный файл не найден.
ERROR_PATH_NOT_FOUND Указанный путь не найден.
ERROR_BAD_FORMAT Файл .exe недействителен (не-Win32 .exe или ошибка в образе .exe).
SE_ERR_ACCESSDENIED Операционная система отклоненадоступ к указанному файлу.
SE_ERR_ASSOCINCOMPLETE Сопоставление имени файла является неполным или недействительным.
SE_ERR_DDEBUSY Не удалось завершить транзакцию DDE, поскольку обрабатывались другие транзакции DDE.
SE_ERR_DDEFAIL Ошибка транзакции DDE.
SE_ERR_DDETIMEOUT Не удалось завершить транзакцию DDE, так как истекло время ожидания запроса.
SE_ERR_DLLNOTFOUND Указанная библиотека DLL не найдена.
SE_ERR_FNF Указанный файл не найден.
SE_ERR_NOASSOC С приложением не связано ни одного приложенияс указанным расширением имени файла.
Эта ошибка также будет возвращена, если вы попытаетесь напечатать файл, который нельзя распечатать.
SE_ERR_OOM Недостаточно памяти для завершения операции.
SE_ERR_PNF Указанный путь былне найдено.
SE_ERR_SHARE Произошло нарушение совместного доступа.

См. ссылку .

...