在Windows操作系統(tǒng)下,無(wú)論是Win98還是WinXP在關(guān)機(jī)的時(shí)候,都會(huì)出現(xiàn)1個(gè)對(duì)話框,讓用戶選擇是重新啟動(dòng)還是關(guān)機(jī),或者注銷(xiāo)用戶等操作。那我們?cè)谧约旱某绦蛑锌梢哉{(diào)用這個(gè)對(duì)話框嗎?答案是可以。
我們可以使用微軟的1個(gè)沒(méi)有公開(kāi)的函數(shù),來(lái)調(diào)用這個(gè)對(duì)話框,這個(gè)函數(shù)位于shell32.dll文件里,它不像別的函數(shù)那樣容易使用,我們不可以直接使用它,必須先使用LoadLibrary函數(shù)來(lái)獲得shell32.dll文件的句柄,然后使用GetProcAddress函數(shù)獲得這個(gè)函數(shù)的地址的指針,最后再通過(guò)這個(gè)指針來(lái)調(diào)用這個(gè)函數(shù)
我們使用Visual C++6.0來(lái)寫(xiě)這個(gè)程序。首先打開(kāi)Visual C++6.0,使用MFC AppWizard新建1個(gè)基于對(duì)話框的工程,工程名為close,在對(duì)話框上加上1個(gè)button控件,標(biāo)題為“關(guān)機(jī)對(duì)話框”,在MFC ClassWizard中添加使用鼠標(biāo)單擊這個(gè)控件時(shí)響應(yīng)的函數(shù),響應(yīng)函數(shù)代碼為:
//首先定義1個(gè)指向指針,指向這個(gè)函數(shù)
typedef void WINAPI RUN?。烾INT
HMODULE hShell32
RUN RunFileDlg
//使用 LoadLibrary函數(shù)獲得shell32.dll的句柄
hShell32 = LoadLibrary″shell32.dll″
//使用GetProcAddress函數(shù)獲得這個(gè)函數(shù)的地址,
RunFileDlg = RUN GetProcAddresshShell32 MAKEINTRESOURCE60
//最后使用指針調(diào)用這個(gè)函數(shù),出現(xiàn)關(guān)機(jī)對(duì)話框
RunFileDlgNULL
好了,代碼寫(xiě)好了,把程序編譯以后,調(diào)試執(zhí)行正常。
以上代碼在Windows98下,使用Visual C++6.0編譯成功。在Win98/2000/XP下運(yùn)行正常。
我們可以使用微軟的1個(gè)沒(méi)有公開(kāi)的函數(shù),來(lái)調(diào)用這個(gè)對(duì)話框,這個(gè)函數(shù)位于shell32.dll文件里,它不像別的函數(shù)那樣容易使用,我們不可以直接使用它,必須先使用LoadLibrary函數(shù)來(lái)獲得shell32.dll文件的句柄,然后使用GetProcAddress函數(shù)獲得這個(gè)函數(shù)的地址的指針,最后再通過(guò)這個(gè)指針來(lái)調(diào)用這個(gè)函數(shù)
我們使用Visual C++6.0來(lái)寫(xiě)這個(gè)程序。首先打開(kāi)Visual C++6.0,使用MFC AppWizard新建1個(gè)基于對(duì)話框的工程,工程名為close,在對(duì)話框上加上1個(gè)button控件,標(biāo)題為“關(guān)機(jī)對(duì)話框”,在MFC ClassWizard中添加使用鼠標(biāo)單擊這個(gè)控件時(shí)響應(yīng)的函數(shù),響應(yīng)函數(shù)代碼為:
//首先定義1個(gè)指向指針,指向這個(gè)函數(shù)
typedef void WINAPI RUN?。烾INT
HMODULE hShell32
RUN RunFileDlg
//使用 LoadLibrary函數(shù)獲得shell32.dll的句柄
hShell32 = LoadLibrary″shell32.dll″
//使用GetProcAddress函數(shù)獲得這個(gè)函數(shù)的地址,
RunFileDlg = RUN GetProcAddresshShell32 MAKEINTRESOURCE60
//最后使用指針調(diào)用這個(gè)函數(shù),出現(xiàn)關(guān)機(jī)對(duì)話框
RunFileDlgNULL
好了,代碼寫(xiě)好了,把程序編譯以后,調(diào)試執(zhí)行正常。
以上代碼在Windows98下,使用Visual C++6.0編譯成功。在Win98/2000/XP下運(yùn)行正常。

