常用Windows9x的朋友一定對Rundll32.exe和Rundll.exe這兩個檔案不會陌生吧,不過,由於這兩個程式的功能原先只限於在微軟內部使用,因而真正知道如何使用它們的朋友想必不多。那麼好,如果你還不清楚的話,那就讓我來告訴你。
首先,請你做個小實驗(請事先保存好你正在運行的程式的結果,否則...):點擊“開始-程式-Ms-Dos方式”,進入Dos窗口,然後鍵入"rundll32.exeuser. exe,restartwindows",再按下回車鍵,這時你將會看到,機器被重啟了!怎麼樣,是不是很有趣呢?
當然,Rundll的功能絕對不只是重啟你的機器。其實,Rundll者,顧名思義,運行Dll也,它的功能就是以命令列的方式呼叫Windows的動態連結函式庫,Rundll32.exe與Rundll.exe的差別就在於前者是呼叫32位元的連結函式庫,而後者是運用於16位元的連結庫,它們的命令格式是:
RUNDLL.EXE,<入口點>,<呼叫參數>
這裡要注意三點:1.Dll檔名不能含有空格,例如該檔位於c:/PRogramFiles/目錄,你要把這個路徑改成c:/Progra~1/;2.Dll檔名與Dll入口點間的逗號不能少,否則程式將出錯並且不會給出任何資訊! 3.這是最重要的一點:Rundll不能用來呼叫含回傳值參數的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在VisualBasic中,提供了一條執行外部程式的指令Shell,格式為:
Shell“命令列”
如果能配合Rundll32.exe用好Shell指令,會使您的VB程式擁有用其他方法難以甚至無法實現的效果:仍以重啟為例,傳統的方法需要你在VB工程中先建立一個模組,然後寫入WinAPI的聲明,最後才能在程式中呼叫。而現在只需一句話:
Shell「rundll32.exeuser.exe,restartwindows」就搞定了!是不是方便多了?
實際上,Rundll32.exe在呼叫各種Windows控制面板和系統選項方面有著獨特的優勢。下面,我就將本人在因特網上收集的有關Rundll的指令列舉如下(很有用的,能省去你很多調用WindowsAPI的時間!!),供大家在編程中引用:
命令列:rundll32.exeshell32.dll,Control_RunDLL
功能:顯示控制面板
命令列:rundll32.exeshell32.dll,Control_RunDLLaccess.cpl,,1
功能:顯示「控制面板-輔助選項-鍵盤」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLaccess.cpl,,2
功能:顯示「控制台-輔助選項-聲音」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLaccess.cpl,,3
功能:顯示「控制台-輔助選項-顯示」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLaccess.cpl,,4
功能:顯示「控制面板-輔助選項-滑鼠」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLaccess.cpl,,5
功能:顯示「控制面板-輔助選項-常規」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLsysdm.cpl@1
功能:運行「控制面板-新增硬體」精靈。
命令列:rundll32.exeshell32.dll,SHHelpShortcuts_RunDLLAddPrinter
功能:執行「控制面板-新增印表機」精靈。
命令列:rundll32.exeshell32.dll,Control_RunDLLappwiz.cpl,,1
功能:顯示「控制台-新增/移除程式-安裝/解除安裝」面板。
命令列:rundll32.exeshell32.dll,Control_RunDLLappwiz.cpl,,2
功能:顯示「控制台-新增/移除程式-安裝Windows」面板。
命令列:rundll32.exeshell32.dll,Control_RunDLLappwiz.cpl,,3
功能:顯示「控制台-新增/移除程式-啟動磁碟」面板。
命令列:rundll32.exesyncui.dll,Briefcase_Create
功能:在桌面上建立一個新的「我的公文包」。
命令列:rundll32.exediskcopy.dll,DiskCopyRunDll
功能:顯示複製軟碟視窗
命令列:rundll32.exeapwiz.cpl,NewLinkHere%1
功能:顯示「建立捷徑」的對話框,所建立的捷徑的位置由%1參數決定。
命令列:rundll32.exeshell32.dll,Control_RunDLLtimedate.cpl,,0
功能:顯示「日期與時間」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLtimedate.cpl,,1
功能:顯示「時區」選項視窗。
命令列:rundll32.exernaui.dll,RnaDial[某個撥號連線的名稱]
功能:顯示某個撥號連線的撥號視窗。如果已經撥號連接,則顯示目前的連線狀態的視窗。
命令列:rundll32.exernaui.dll,RnaWizard
功能:顯示「新撥號連線」精靈的視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLdesk.cpl,,0
功能:顯示「顯示屬性-背景」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLdesk.cpl,,1
功能:顯示「顯示屬性-螢幕保護」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLdesk.cpl,,2
功能:顯示「顯示屬性-外觀」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLdesk.cpl,,3
功能:顯示顯示「顯示屬性-屬性」選項視窗。
命令列:rundll32.exeshell32.dll,SHHelpShortcuts_RunDLLFontsFolder
功能:顯示Windows的「字型」資料夾。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@3
功能:同樣是顯示Windows的「字型」資料夾。
命令列:rundll32.exeshell32.dll,SHFormatDrive
功能:顯示格式化軟碟對話框。
命令列:rundll32.exeshell32.dll,Control_RunDLLjoy.cpl,,0
功能:顯示「控制台-遊戲控制器-一般」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLjoy.cpl,,1
功能:顯示「控制台-遊戲控制器-進階」選項視窗。
命令列:rundll32.exemshtml.dll,PrintHTML(HTML文件)
功能:列印HTML文件。
命令列:rundll32.exeshell32.dll,Control_RunDLLmlcfg32.cpl
功能:顯示MicrosoftExchange一般選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@0
功能:顯示「控制面板-滑鼠」選項。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@1
功能:顯示「控制台-鍵盤屬性-速度」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@1,,1
功能:顯示「控制台-鍵盤屬性-語言」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@2
功能:顯示Windows「印表機」資料夾。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@3
功能:顯示Windows「字型」資料夾。
命令列:rundll32.exeshell32.dll,Control_RunDLLmain.cpl@4
功能:顯示「控制台-輸入法屬性-輸入法」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLmodem.cpl,,add
功能:執行「新增調變解調器」精靈。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl,,0
功能:顯示「控制台-多媒體屬性-音訊」屬性頁。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl,,1
功能:顯示「控制台-多媒體屬性-影片」屬性頁。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl,,2
功能:顯示「控制台-多媒體屬性-MIDI」屬性頁。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl,,3
功能:顯示「控制台-多媒體屬性-CD音樂」屬性頁。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl,,4
功能:顯示「控制台-多媒體屬性-裝置」屬性頁。
命令列:rundll32.exeshell32.dll,Control_RunDLLmmsys.cpl@1
功能:顯示「控制台-聲音」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLnetcpl.cpl
功能:顯示「控制面板-網路」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLodbccp32.cpl
功能:顯示ODBC32資料管理選項視窗。
命令列:rundll32.exeshell32.dll,OpenAs_RunDLL{drive:/path/filename}
功能:顯示指定檔案(drive:/path/filename)的「開啟方式」對話方塊。
命令列:rundll32.exeshell32.dll,Control_RunDLLpassWord.cpl
功能:顯示「控制台-密碼」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLpowercfg.cpl
功能:顯示「控制台-電源管理屬性」選項視窗。
命令列:rundll32.exeshell32.dll,SHHelpShortcuts_RunDLLPrintersFolder
功能:顯示Windows「印表機」資料夾。 (同rundll32.exeshell32.dll,Control_RunDLLmain.cpl@2)
命令列:rundll32.exeshell32.dll,Control_RunDLLintl.cpl,,0
功能:顯示「控制台-區域設定屬性-區域設定」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLintl.cpl,,1
功能:顯示「控制台-區域設定屬性-數字」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLintl.cpl,,2
功能:顯示「控制台-區域設定屬性-貨幣」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLintl.cpl,,3
功能:顯示「控制台-區域設定屬性-時間」選項視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLintl.cpl,,4
功能:顯示「控制台-區域設定屬性-日期」選項視窗。
命令列:rundll32.exedesk.cpl,InstallScreenSaver[螢幕保護檔名]
功能:將指定的螢幕保護檔案設定為Windows的螢幕保,並顯示螢幕保護屬性視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLsysdm.cpl,,0
功能:顯示「控制台-系統屬性-常規」屬性視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLsysdm.cpl,,1
功能:顯示「控制台-系統屬性-裝置管理員」屬性視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLsysdm.cpl,,2
功能:顯示「控制台-系統屬性-硬體設定檔」屬性視窗。
命令列:rundll32.exeshell32.dll,Control_RunDLLsysdm.cpl,,3
功能:顯示「控制台-系統屬性-效能」屬性視窗。
命令列:rundll32.exeuser.exe,restartwindows
功能:強行關閉所有程式並重新啟動機器。
命令列:rundll32.exeuser.exe,exitwindows
功能:強行關閉所有程式並關機。
命令列:rundll32.exeshell32.dll,Control_RunDLLtelephon.cpl
功能:顯示「撥號屬性」選項窗口
命令列:rundll32.exeshell32.dll,Control_RunDLLthemes.cpl
功能:顯示「桌面主題」選項面板
當然,不只VisualBasic,象Delphi.VisualC++等其他程式語言也可以透過呼叫外部命令的方法來使用Rundll的這些功能,具體方法這裡就不再詳細敘述了。靈活的使用Rundll,一定會使你的程式設計輕輕鬆松,達到事半功倍的效果! ->