Страницы

Поиск по вопросам

пятница, 21 февраля 2020 г.

Проверка на тип приложения

#cpp #winapi


Как можно проверить консольное ли приложение или оконное? Может в winapi есть какое-то
описание процесса, его свойств?
    


Ответы

Ответ 1



Если вы используете майкрософтовский SDK, то начиная с версии 10 для проверки "самого себя" у вас есть [недокументированная или полу-документированная] возможность сделать #include ... _crt_app_type type = _query_app_type(); с возвращаемыми значениями _crt_console_app и _crt_gui_app. Аналогичные возможности есть и в более ранних версиях SDK, но интерфейс варьируется.

Ответ 2



В текущем процессе проверить, является ли приложение консольным, можно так: #include #pragma comment(lib, "Dbghelp") extern "C" const IMAGE_DOS_HEADER __ImageBase; ... bool isConsole(){ PIMAGE_NT_HEADERS nt = ImageNtHeader((void*)&__ImageBase); return nt->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI; }

Комментариев нет:

Отправить комментарий