OS側から表示されたダイアログのボタン押下の判定

解決


mgr  2009-12-14 22:33:06  No: 142992  IP: [192.*.*.*]

すみませんが、以下についてご指導を宜しくお願いします。

環境
・Windows 2000 Pro SP4
・VB 6.0 SP6

内容
・ハードウェアの取り外しなどを行ったときに、OS側からダイアログが
  表示されます。
・このダイアログで、何のボタンが押下されたのか判定したいのですが、
  可能でしょうか。

  宜しくお願いします。<m(__)m>

編集    削除
mgr  2009-12-14 23:28:27  No: 142993  IP: [192.*.*.*]

すみません、質問内容を訂正します。

ハードウェアの取り外し後、確認ダイアログ
  「'USB 大容量記憶装置デバイス' は安全に取り外すことができます。」
が表示されます。
「OKボタン押下」、「ダイアログ右上×押下」
のイベントを取得したいのですが、可能でしょうか。

宜しくお願い致します。

編集    削除
オショウ  2009-12-14 23:49:40  No: 142994  IP: [192.*.*.*]

取れるか取れないかと言われれば、技術的には取れると思いますが
VB6のみでは取れないと思います。

次に・・・
結果どういうことを知りたいのでしょうか?
取り外しを行った後、何かイベント的同期を
取りたいのかどうか・・・

何故そういうことをしたいのかが解れば代替
策もあるかも・・・

以上。

編集    削除
mgr  2009-12-15 02:52:15  No: 142995  IP: [192.*.*.*]

ご連絡ありがとうございます。
処理内容を以下に記載します。

①ハードウェアの取り外しを行う。(CM_Request_Device_Eject)
②確認ダイアログを日本語→英語表示にする。

現状の不具合
  複数のダイアログが表示された場合、フォーカスのあるダイアログのみ
  英語化されている。

策?
案①「OK」押下で、次のデバイスを取り外す。
案②「CM_Request_Device_Eject」後のダイアログを出さない

案②を調べようと思っています。

編集    削除
mgr  2009-12-15 09:42:04  No: 142996  IP: [192.*.*.*]

今回の処理は、OSは日本語のまま、ハードウェアの取り外しを行った際に、
表示される日本語を英語化するでしたが、日本語を出さないに切り替えました。

VBでリムーバブルドライブを取得+unplug で進めようと思っています。

お手数をおかけしてすみませんでした。

編集    削除
オショウ  2009-12-15 09:57:49  No: 142997  IP: [192.*.*.*]

CM_Request_Device_Ejectのパラメータはどうなってます?

PNP_VETO_TYPE VetoType = PNP_VetoTypeUnknown;
WCHAR VetoNameW[MAX_PATH];
VetoNameW[0] = 0;

CM_Request_Device_EjectW(DevInstParent,
          &VetoType, VetoNameW, MAX_PATH, 0);

のようにしていますか?

それとも・・・

CM_Request_Device_EjectW(DevInstParent,
          NULL, NULL, 0, 0);

としてますか?

以上。

編集    削除