?----前幾天在朋友家看到一款聯(lián)想射雕modem,吸引我的不是modem的外形、性能之類的說明,而是它配套光盤中的說明能夠自動安裝modem的驅(qū)動程序?當(dāng)時覺得非常奇怪,因為外置式modem還可以通過檢測com口對modem發(fā)送at指令獲得modem類型,從而安裝相應(yīng)驅(qū)動程序,而內(nèi)置式modem是沒有辦法這樣做的,如果沒有先安裝驅(qū)動程序,無法對modem進行檢測的。再仔細觀察說明書,原來聯(lián)想的modem在pc機上用的都是外置式的。這倒是可以通過程序?qū)崿F(xiàn)自動安裝的。
----運行起,選擇自動安裝,一步步進行下去,仔細觀察modem,發(fā)現(xiàn)modem的指示燈沒有一點變化,如果程序在檢測modem,modem應(yīng)該有所反應(yīng)的啊,過了一陣,出現(xiàn)了s的那個檢測到新硬件的窗口,然后就是正在安裝驅(qū)動程序,實在令我非常詫異。
----這是怎么回事?難道它不需要檢測modem就能讓s知道有新硬件把我又把驅(qū)動程序卸掉,重新運行,這次是緊緊的盯著屏幕,忽然,控制面板中系統(tǒng)對話框出現(xiàn)了,自動切換到了設(shè)備管理器的界面,然后就是檢測到了新硬件,正在安裝驅(qū)動程序。
----我們知道,如果在電腦上安裝新的pnp硬件,s啟動后會報告找到新硬件,如果這時選擇取消按鈕,進入s后,再進入控制面板,選擇系統(tǒng),選擇設(shè)備管理器,選擇刷新按鈕,s將再次檢測硬件,會再次報告找到新硬件。
----于是我再次卸掉驅(qū)動程序,先把系統(tǒng)屬性界面運行起來,顯示出性能頁面中的虛擬內(nèi)存對話框,再運行,只見虛擬內(nèi)存對話框突然出現(xiàn)在前臺,而本來應(yīng)該是在前臺的;也沒有出現(xiàn)檢測到新硬件對話框,最后報告沒有檢測到modem。
----看來真相大白了,聯(lián)想的自動安裝程序是通過調(diào)用s的刷新功能實現(xiàn)其安裝的,但是一般我們安裝新硬件的時候,如果s本身沒有安裝程序,都會要求我們插入驅(qū)動程序安裝盤,那么聯(lián)想modem的驅(qū)動程序是怎么裝上去的呢?
----仔細查看聯(lián)想modem的配套光盤,根目錄下有幾個inf文件,看來這幾個是modem的驅(qū)動程序了,dof目錄中查找相應(yīng)的驅(qū)動程序,如果沒有找到,才會要求驅(qū)動程序安裝盤,看來聯(lián)想的自動安裝程序是先把驅(qū)動程序拷貝到inf目錄下,然后再刷新設(shè)備管理器,從而安裝modem.。
----我首先屏蔽掉對系統(tǒng)屬性的刷新功能,然后在m的時候在inf目錄下查找聯(lián)想modem的驅(qū)動程序,果然已經(jīng)拷貝了,從而證實了我的想法。
----下面我說說如何用vb實現(xiàn)類似的功能:
----首先是將需要的驅(qū)動程序拷貝到s相應(yīng)的目錄下,
----用vb中的filecopy函數(shù)可以完成這項功能。
----獲得y”,獲得systemdirectory”。
----declarefunctiongetylib"kernelya"(byvallpbufferstring,byvalnsizelong)longdeclarefunctiongetsystemdirectorylib"kerneldirectorya"(byvallpbufferstring,byvalnsizelong)long
----然后是調(diào)用控制面板中的系統(tǒng)屬性對話框。
----shell"ol_rundl,,1",就是控制面板的系統(tǒng)屬性擴展,要運行它需要調(diào)用ol_rundll運行。
----如果我們打開資源管理器的“查看”菜單中“文件夾選項”菜單,將會出現(xiàn)一個對話框,切換到“文件類型”,查找“控制面板擴展”文件類型,選中后,詳細信息中說明它的擴展名為“cpl”,打開方式“”,點擊“編輯”按鈕,出現(xiàn)“編輯文件類型”對話框,對應(yīng)的操作是“使用控制面板打開”,選擇“編輯”按鈕,出現(xiàn)一個名為“編輯這種類型的操作:控制面板擴展”,這時我們將在“用于執(zhí)行操作的應(yīng)用程序”中獲得如下信息:
----ol_rundll%1,%*
----最后就是如何實現(xiàn)刷新功能了,刷新按鈕對應(yīng)的快捷鍵是“alt+f”,我們只要讓其窗口獲得焦點,然后再發(fā)送一個按鍵信息就可以了。
sendkeys"%f"'%表示alt按鍵
----其它控制面板擴展對應(yīng)的命令:
----控制面板:ol_rundll
----輔助選項:ol_rundl,,1(最后一個參數(shù):1顯示鍵盤設(shè)置;2顯示聲音設(shè)置;3顯示顯示設(shè)置;4顯示鼠標(biāo)設(shè)置;5顯示常規(guī)設(shè)置)
----添加新硬件:ol_rundl1
----增加新的打印機:lpshortcuts_rundlladdprinter
----添加/刪除程序:ol_rundl,,1(最后一個參數(shù):1顯示安裝/卸載;2顯示s安裝;3顯示啟動盤)
----時間/日期:ol_rundl,,0(最后一個參數(shù):0顯示設(shè)置日期/時間;1顯示設(shè)置時區(qū))
----顯示器:ol_rundl,,0(最后一個參數(shù):0顯示背景設(shè)置;1顯示屏幕保護設(shè)置;2顯示外觀設(shè)置;3顯示窗口設(shè)置)
----操縱桿:ol_rundl,,0(最后一個參數(shù):0顯示常規(guī)設(shè)置;1顯示高級設(shè)置)
----鼠標(biāo)屬性:ol_rundl0
----鍵盤屬性:ol_rundl1,0(最后一個參數(shù):0顯示速度設(shè)置;1顯示語言設(shè)置)
----打印機屬性:ol_rundl2
----字體屬性:ol_rundl3
----增加modem:ol_rundl,,add
----多媒體:ol_rundl,,0(最后一個參數(shù):0顯示音頻屬性;1顯示視頻屬性;2顯示midi屬性;d音樂屬性;4顯示設(shè)備屬性)
----聲音:ol_rundl1
----網(wǎng)絡(luò):ol_rundl
----口令:ol_rundl
----區(qū)域設(shè)置:ol_rundl,,0(最后一個參數(shù):0顯示區(qū)域設(shè)置;1顯示數(shù)字格式設(shè)置;2顯示金額格式設(shè)置;3顯示時間格式設(shè)置;4顯示日期格式設(shè)置)
----系統(tǒng)設(shè)置:ol_rundl,,0(最后一個參數(shù):0顯示常規(guī)設(shè)置;1顯示設(shè)備管理設(shè)置;2顯示硬件設(shè)置;3顯示性能設(shè)置)
----ie4設(shè)置:ol_rundl(最后一個參數(shù):0顯示常規(guī)設(shè)置;1顯示安全設(shè)置;2顯示內(nèi)容設(shè)置;3顯示連接設(shè)置;4顯示程序設(shè)置;5顯示高級設(shè)置)