抓取USB大量儲存裝置的方法Part 3-3 如何確認裝置已經完成安裝或移除呢?? |
|
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
接下來我們要如何確認硬體裝置已經完成安裝或移除呢?? 首先,讓我們來觀察Delphi的Messages.pas這個檔案 以 WM_ACTIVE 訊息來說,在Delphi進行訊息攔截的程式樣板如下 procedure TForm1.GetActiveMessage(var Msg:TWMActivate);
begin
case Msg.Active of
WA_INACTIVE:
begin end;
WA_ACTIVE:
begin end;
WA_CLICKACTIVE:
begin end;
end;//case...end!!
end; 看到以上的程式碼之後,會產生一個疑問就是 " TWMActivate " 這個資料格式(注意!!),是從哪裡來的??
讓我們來查看Messages.pas 這一段 Source Code TWMActivate = packed record
Msg: Cardinal;
Active: Word; { WA_INACTIVE, WA_ACTIVE, WA_CLICKACTIVE }
Minimized: WordBool;
ActiveWindow: HWND;
Result: Longint;
end; 原來在 Delphi中早就針對Windows Message 處理的需求幫我們把大部分的 Message ID <-----> 參數的傳遞方式由C++轉為Delphi的Code
(請參考前一篇文章中說明的 Msg 參數的結構 !!) 所以才會有以下的codeing方式....很方便吧!! case Msg.Active of
WA_INACTIVE:
begin end;
WA_ACTIVE:
begin end;
WA_CLICKACTIVE:
begin end;
end;//case...end!! 然而,百密仍有一疏;(我個人認為,這可能是OS一直在更新的原因;當然,函式庫會來不及更新吧??
如果有新的Patch應該會更新吧?? ^O^ ) 在Delphi7的SourceCode(Messages.pas)中,卻沒有TWMDeviceChange這個資料格式; OK,沒關係 , 雙手是萬能的;經過查詢之後,我們可以將>參考>參考>參考
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |