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