Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
1

Как установить код возврата без выхода из программы?

06.08.2017, 23:28. Просмотров 247. Ответов 5
Метки нет (Все метки)

Т.е. не используя ExitProcess.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2017, 23:28
Ответы с готовыми решениями:

Как установить цвет фона клиентской области без WM_PAINT
а, WM_CTLCOLORSTATIC вызывается только для дочерних элементов

Диалог выхода из программы
Нужно сделать выход из прграммы, что-то типа MessageBox(hWnd, TEXT("Выйти из...

Как установить цвет панели без рисования (по умолчанию установки цветов)?
Обычная панель STATIC по умолчанию создает окно с определенным цветом (Панель...

Как при запуска программы из командной строки узнать код возврата?
int main() { return 0; } Как при запуска этой программы из...

Как проверить что поступает в проверку if код возврата или вывод программы
Доброго времени суток форумчане ! Хотел пройти курс в степике , уже второй день...

5
jupman
230 / 133 / 19
Регистрация: 10.11.2015
Сообщений: 305
07.08.2017, 06:20 2
Dragokas, код возврата хранится в _EPROCESS.ExitStatus, добратся до неё можно в kernel mode. Если пропатчить, цель достигается, вызов GetExitCodeProcess возвращает установленный мною код, процесс ведет себя адекватно (но протестил поверхностно и только на XP SP3 X86). Из user mode решения, по-моему, нет. Как вариант перехватывать GetExitCodeProcess (либо пониже, ZwQueryInformationProcess с кодом ProcessBasicInformation, первое поле структуры PROCESS_BASIC_INFORMATION это ExitStatus).
1
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
07.08.2017, 13:08  [ТС] 3
.NET приложения получается работают как-то иначе, т.к. позволяют установить этот код через:

C#
1
System.Environment.ExitCode
https://msdn.microsoft.com/en-us/lib....exitcode.aspx
0
VTsaregorodtsev
525 / 464 / 68
Регистрация: 19.02.2010
Сообщений: 1,747
07.08.2017, 14:49 4
Видимо, устанавливают переменную, значение которой возвращается return'ом при выходе из WinMain.
Или запоминают значение для последующего использования в вызове PostQuitMessage (eсли закрытие .net-приложения в итоге сводится к вызову этой функции).
1
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
07.08.2017, 15:50  [ТС] 5
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Видимо, устанавливают переменную, значение которой возвращается return'ом при выходе из WinMain.
Если это правда, можно попробовать проверить вызовом крэша приложения до его встречи с return (?).
Собственно, ради этого и хотелось бы иметь возможность задать Exit Code, правда не для .NET, а в обычном оконном приложении.
Есть программа (не моя), логирующая код выхода. И есть желание расставить несколько кодов по ключевым точкам (имеется только user-mode).
0
jupman
230 / 133 / 19
Регистрация: 10.11.2015
Сообщений: 305
07.08.2017, 17:00 6
Dragokas, VTsaregorodtsev прав. Посмотрел в отладчике. Значение хранится в переменной, ExitCode остается STILL_ACTIVE вплоть до вызова NtTerminateProcess.
1
07.08.2017, 17:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2017, 17:00

В чем разница между exit(код возврата) и ExitProcess (код возврата)?
Я так себе представляю, имеется два варианта выхода из приложения, с передачей...

Код возврата к началу программы
Вот программа помогите сделать так, что если вводить с клавиатуры отрицательный...

Повторный ввод данных без выхода из программы
Здравствуйте! Вот фрагмент кода: while(w1 != 1, w1 != -1){ // веса w1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru