![]() |
![]() (发表于2004-9-11 21:28:00) ![]() (发表于2004-9-11 22:35:00) ![]() #include <windows.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC); Sleep(50); PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC); Sleep(50); PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC); Sleep(50); return 0; } (发表于2004-9-11 23:23:00) ![]() (发表于2004-9-11 23:53:00) ![]() 但是一旦使用了它, 如果不指定/entry:<function> Linker Option,Linker将查找WinMain作为entry point. 此时只要为程序提供WinMain入口函数即可。 如果不用WinMain而用main,就必须为Linker指定/entry:mainCRTStartup 由此可见,具体方案有两个: 方案1: #pragma comment( linker, "/subsystem:windows" ) int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { } 方案2: #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) int main(void) { } (发表于2004-9-13 13:39:00) ![]() #define ENTRY_SCHEME 1 //控制使用何种方案的宏常量 #if ENTRY_SCHEME==1 #pragma message("------------main---------------") #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) int main( void ) #else #pragma message("-----------WinMain-------------" ) #pragma comment( linker, "/subsystem:windows" ) int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) #endif { } (发表于2004-9-13 13:41:00) ![]() 先用 16 位编辑工具开了那个执行档 在位置 0x130~0x13f (通常是 0x13c 或 0x134) 的位置之间找个数值 03,将它变为02 原来就是这么简单喔 !! (发表于2004-9-13 16:55:00) ![]() (发表于2004-9-13 17:33:00) ![]() (发表于2004-9-13 17:35:00) ![]() (发表于2004-9-15 12:27:00) ![]() GUI应用程序的进入点是:WinMain/wWinMain,嵌入到可执行文件的启动函数是WinMainCRTStartup/wWinMainCRTStartup。 CUI应用程序的进入点是:main/wmain,嵌入到可执行文件的启动函数是mainCRTStartup/wmainCRTStartup。 (发表于2007-4-2 10:13:00) .......................................................................... |
![]() |