USB -- Device Change的訊息處理問題 |
缺席
|
00156
高階會員 ![]() ![]() ![]() ![]() 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
我利用改寫下面網站下載的程式寫一隻USB控管的程式,只要是USB Mass Storage的儲存設備接上,就Disable該Port,設備移除後再重新啟用該Port (目的是禁止使用者在該電腦使用USB儲存設備)
http://www.yeahware.com/download/eject.zip 我的作法是在收到Device Change的message時作判讀及關閉/啟用該Port的動作。程式可以正常執行。但程式關閉後,USB就無法使用了,因為每次Device Change的message還是會很神奇的繼續執行程式中的處理程序。甚至刪除程式檔案或關機重開也一樣! 我在工作管理員中的process也沒有找到該程式繼續在執行。 請教大家為甚麼會有這樣的情形?如何才能在程式關閉後恢復正常的訊息處理? 我的程式碼大致像這樣: [code delphi] procedure TForm1.WMDeviceChange(var Msg: TMessage); const DBT_DEVNODES_CHANGED = $0007; begin case Msg.wParam of DBT_DEVNODES_CHANGED: begin GetDevInfo; EnumAddDevices(DevInfo); DisableDevice('USB MASS STORAGE'); //關閉接上隨身碟的Port EnableDevice('USB ROOT HUB'); //恢復啟用沒有接上隨身碟的Port(之前被關閉的) end; end; end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |