15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
エクスプローラなどファイル管理ソフトで、ネットワークリソースを
ドライブに割り当てると自動的に割り当てたドライブが増えていきますが
どのようにして接続、切断をチェックすれば良いのでしょうか?
[A]
ネットワークのドライブが接続、切断されるとWM_DEVICECHANGEと言う
メッセージが送られてきますのでこのメッセージを処理します。
通常はDBT_DEVICEARRIVALとDBT_DEVICEREMOVECOMPLETEをチェックすれば
良いと思われます。
[例]
//未定義なので接続か、切断かをチェックする場合追加する。
const
DBT_QUERYCHANGECONFIG = $0017;
DBT_CONFIGCHANGED = $0018;
DBT_CONFIGCHANGECANCELED = $0019;
DBT_DEVICEARRIVAL = $8000;
DBT_DEVICEQUERYREMOVE = $8001;
DBT_DEVICEQUERYREMOVEFAILED = $8002;
DBT_DEVICEREMOVEPENDING = $8003;
DBT_DEVICEREMOVECOMPLETE = $8004;
DBT_DEVICETYPESPECIFIC = $8005;
DBT_USERDEFINED = $FFFF;
−−−略−−−
public
procedure DEVICECHANGE(var Msg:Tmessage); message WM_DEVICECHANGE;
−−−略−−−
procedure TForm1.DEVICECHANGE(var Msg:Tmessage);
begin
//GetLogicalDrives
//GetLogicalDriveStrings
//等でドライブをチェックする。
{ case Msg.WParam of
DBT_CONFIGCHANGECANCELED:
//A request to change the current configuration (dock or undock) has
//been canceled.
//変更のリクエストがキャンセルされた
DBT_CONFIGCHANGED:
//The current configuration has changed, due to a dock or undock.
//現在の設定が変更された
DBT_DEVICEARRIVAL:
//A device has been inserted and is now available.
//追加されたデバイスが利用可能となった
DBT_DEVICEQUERYREMOVE:
//Permission is requested to remove a device.
//Any application can deny this request and cancel the removal.
//デバイスの削除の要求があった
//すべてのアプリケーションは、削除のリクエストを取り消すことができる
DBT_DEVICEQUERYREMOVEFAILED:
//A request to remove a device has been canceled.
//デバイスの削除のリクエストが取り消された
DBT_DEVICEREMOVECOMPLETE:
//A device has been removed.
//デバイスが削除された
DBT_DEVICEREMOVEPENDING:
//A device is about to be removed.
//Cannot be denied.
//デバイスが削除されようとしている。拒否できない。
DBT_DEVICETYPESPECIFIC:
//A device-specific event has occurred.
//デバイス固有イベント
DBT_QUERYCHANGECONFIG:
//Permission is requested to change the current configuration (dock
or undock).
//現在の構成の変更のリクエストがあった
DBT_USERDEFINED:
//The meaning of this message is user-defined.
//ユーザー定義
end;}
end;
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|