全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2117
推到 Plurk!
推到 Facebook!

USB -- Device Change的訊息處理問題

缺席
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-15 23:21:46 IP:118.166.xxx.xxx 訂閱
我利用改寫下面網站下載的程式寫一隻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]


系統時間:2017-12-12 10:20:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!