線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1849
推到 Plurk!
推到 Facebook!

請教關於WM_DEVICECHANGE

尚未結案
tglee
一般會員


發表:10
回覆:18
積分:5
註冊:2004-10-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-07 10:56:53 IP:60.248.xxx.xxx 未訂閱
各位大大,    小弟得知USB 插拔時會有WM_DEVICECHANGE Message 從WPARAM 參數還可知道 插入時會有 DBT_DEVICEARRIVAL message                       拔出時會有 DBT_DEVICEREMOVECOMPLETE Message    那為甚麼 我插拔時只有接收到WM_DEVICECHANGE 而收不到WPARAM 參數內的訊息,真奇怪?? 我的作業環境是 > 發表人 -
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-08 19:38:34 IP:220.131.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58642    網海無涯,唯學是岸! 因為擁有,所以分享!
tglee
一般會員


發表:10
回覆:18
積分:5
註冊:2004-10-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-10 09:37:01 IP:60.248.xxx.xxx 未訂閱
謝謝Qoo 版大的回答 ,    m8815010 版大那篇我之前也有去試, 不過還是沒有任何反應,不知道為甚麼 就是可以收到
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-10 10:10:17 IP:61.66.xxx.xxx 未訂閱
hi tglee: 我確定這段CODE是可以用的(剛又再試一次) 你可以 1 檢查你的程式碼是否有漏掉的 2 用trace到WM_DEVICECHANGE的判斷式中看你得到哪些東西
tglee
一般會員


發表:10
回覆:18
積分:5
註冊:2004-10-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-10 12:22:05 IP:60.248.xxx.xxx 未訂閱
謝謝blk5743 大大回覆,    我有去試m8815010 大大的Code,我全部照Copy 不過執行時只有WM_DEVICECHANGE 有訊息 所以我就改大大的程式去抓WParam 的Message  如下    
void __fastcall TForm1::FormWndProc(TMessage& Message)
{
 OldFormWndProc(Message);     if (Message.Msg == WM_DEVICECHANGE) {        Memo1->Lines->Add((AnsiString)Message.WParam);     }
}    
結果訊息一直重入 7 的數值 插入送出十多個 7 拔出時也送出 6 個 7 我在 >
tglee
一般會員


發表:10
回覆:18
積分:5
註冊:2004-10-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-11 11:57:33 IP:60.248.xxx.xxx 未訂閱
各位大大,    我解決了,有兩個方向 1. 用RegisterDeviceNotification     通知Window 有那個device 插拔    2. 之前因為BCB 6.0 Data alignment    預設為Quad Word 在判斷某些結構大小會有問題    所以我設為Byte    現在設回Quad Word 就沒問題    不過插拔會有重入問題,我再研究啦 之前謝謝各位大大的回覆,謝謝     
系統時間:2024-04-29 20:39:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!