首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么知道是控制台还是GUI程序

2012-02-09 
如何知道是控制台还是GUI程序写一个函数给别人调用,功能简单但是要区分控制台还是窗口程序在函数中,其实知

如何知道是控制台还是GUI程序
写一个函数给别人调用,功能简单

但是要区分控制台还是窗口程序在函数中,其实知道是控制台就行了

在VS2005里好像有个宏,我忘了

但是在VC6里没有,所以不知道该怎么做

实在不行只能自己定义个宏了

[解决办法]
这个是网上的一段代码, 可以试试:)

#include <windows.h>
#include <ImageHlp.h>
...
enum Subsystem
{
Console,
Window
};

bool getSelfSubsystem(Subsystem& aSubsystem)
{
HMODULE myModuleHandle = ::GetModuleHandle(NULL);
if (!myModuleHandle)
return false;
BYTE* myImagePtr = (BYTE*)myModuleHandle;
PIMAGE_DOS_HEADER myDosPtr = (PIMAGE_DOS_HEADER)myImagePtr;
if (myDosPtr-> e_magic != IMAGE_DOS_SIGNATURE)
return false;
PIMAGE_NT_HEADERS myNtHeaderPtr = (IMAGE_NT_HEADERS*)((BYTE*)(myDosPtr) + (DWORD)(myDosPtr-> e_lfanew));
if (myNtHeaderPtr-> Signature != IMAGE_NT_SIGNATURE)
return false;
PIMAGE_OPTIONAL_HEADER myOptHeaderPtr = &myNtHeaderPtr-> OptionalHeader;
switch (myOptHeaderPtr-> Subsystem)
{
case IMAGE_SUBSYSTEM_WINDOWS_GUI:
aSubsystem = Window; // GUI
return true;
case IMAGE_SUBSYSTEM_WINDOWS_CUI:
aSubsystem = Console;// Console
return true;
default:
return false;
}
}

热点排行