Страница: 1 |
Вопрос: Коды возврата | Добавлено: 06.12.03 06:32 |
Автор вопроса: ![]() |
Подскажите, как поймать коды возврата запускаемой программы? shell возвращает TaskId (или как это там называется) -- в общем, не то, WinExec возвращает свои коды, например, FileNotFound. Что тут можно сделать? |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 201502381 Вопросов: 15 Ответов: 737 |
Профиль | Цитата | #1 | Добавлено: 06.12.03 07:06 |
Shell возвращает идентификатор процесса, запускаемой программы... Что ещё нужно? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 27 Ответов: 150 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 06.12.03 09:38 |
ShellExecute пробовал? все что приходит до 32 это ошибки... остальное PID |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 06.12.03 14:08 |
Приведи кусок кода и объясни какого рода действия собираешся выполнять с окном... Я вообще не понял, что такое "коды возврата". |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 25 |
Профиль | Цитата | #4 | Добавлено: 06.12.03 16:15 |
Neco, Нет, здесь не в окнах дело. Например, запускаешь ты из своей программы другую, как узнать как отработала дочерняя программа? Для этого и служат коды возврата. Например, если родительской программе нужно вернуть сообщение (никакой связи с сообщениями vindows), о том, что "всё нормально", обычно возвращают 0. А в зависимости от критичности ошибки (или ситуации) возвращается всё большее значение. Вообще этот механизм чаще всего используется в пакетниках, но и в реальной программе иногда нужен. В старых языках (под DOS в смысле) сами функции запуска возвращали код возврата, да была ещё прекрасная функция 4dh прерывания 21h -- всё, что поддерживало asm могло получить этот самый код возврата. Ну, это лирическое отступление; сейчас ShellExecute попробуем. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 07.12.03 07:56 |
Попробуй GetLastError после вызова функции. Вроде в ДОСе также было. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Хранитель чата ICQ: 137392264 Вопросов: 8 Ответов: 557 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 07.12.03 10:21 |
Я так, понял, что надо получить код завершения программы запущенной через Shell. Вот код для запуска программы (не через Shell, a через CreateProcess), ожидающей завершение выполнения и возвращающий код завершения. Private Type STARTUPINFO Private Type PROCESS_INFORMATION Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _ Private Const INFINITE = -1& On Error GoTo ErrHand Для вызова функции: Ret = ExecCmd("c:\1.exe") |
Страница: 1 |
|