[C++]回調系統關機對話框

只是想圖個方便,或者好看,做一個跟“開始”菜單上關機一樣的按扭,打開系統的關機對話框。

於是從網上找了找現成的代碼,然後自己改了改,有了這個。

爲了不顯示出窗體,我把控制檯的窗口也給隱藏了。

VS2010建立的入口點不是main(),因爲必須爲這個我才改的。原來的是_tmain()吧,有點記不清了。

回調函數則始終我是一知半解。

//隱藏控制檯窗口1
#pragma comment(linker, "/subsystem:\"windows\"   /entry:\"mainCRTStartup\"")

//注意函數入口應爲 main() 函數

//特別說明:此方法僅僅適用於vs 2003以上版本,已經經過驗證。
//因爲#pragma comment是vs特有的,而不是c++的標準


//調用系統的關機對話框
typedef int (CALLBACK *SHUTDOWNDLG) (int);   
CString s;
    
HINSTANCE hInst = LoadLibrary(TEXT("shell32"));
SHUTDOWNDLG SHShutDownDialog;
    
if(hInst != 0)
    {
	 SHShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst, (LPSTR)60);
		 (*SHShutDownDialog)(0);
		 FreeLibrary(hInst);
    } 

都做完後基本上具有了功能。

但是奇怪的讓我想不明白的問題是,有時候會失效。

再打開一次,卻又管用。


最後再附加另一段隱藏控制檯的代碼吧,這個在本程序中沒起作用。也許在別的地方可以管用。

	// 隱藏控制檯窗口2
	HWND hwnd;

	if(hwnd=::FindWindow((LPCWSTR)"ConsoleWindowClass",NULL)) //找到控制檯句柄
	{
	::ShowWindow(hwnd,SW_HIDE); 
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章