如何知道是控制台还是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;
}
}