カスタム検索
Delphi Tips
WindowProc
Message_QueryCancelAutoPlay

WindowsのCD自動再生画面表示
を解除、回避する方法のソース
トップページ

Delphiプログラマーの皆様へ以下ソースはDelphi4で作成しています。
他のバージョンでも恐らく動作すると思われます。
単にWindowsのメッセージを操作しているだけですので、Delphi以外の言語を
お使いの方も、概ね共通で使えると思います。
どうぞご自由にお使いください。
動作環境:Win7、VISTA、XP、Me、98、95で恐らくOKでしょう。

■フォームのCreate時に、WindowProcに関連付けます。
Windowが作成される時にWindowProcedureを呼び出します。ソースは簡単です。



private
{ Private 宣言 }
procedure WindowProcedure(var Message : TMessage);
public
{ Public 宣言 }

//FormのCreateイベント

procedure TForm1.FormCreate(Sender: TObject);
begin
Self.WindowProc := WindowProcedure;
Message_QueryCancelAutoPlay := RegisterWindowMessage('QueryCancelAutoPlay') ;
end;

//Message_QueryCancelAutoPlayのトラップ
procedure TForm1.WindowProcedure(Var Message : TMessage);
begin
if Message.Msg = Message_QueryCancelAutoPlay then begin
if CheckBox1.checked then
Message.Result := 1;
//自動再生画面表示拒否

else
Message.Result := 0;
//自動再生画面表示許可
end;
end;

■Windowsでは、CDやDVDディスクがトレイに挿入されると
「Message_QueryCancelAutoPlay」メッセージをその時点で
フォアグランドで動作するアプリケーションソフト(アクティブ)1つだけに
送って来ます。そのメッセージに応答するだけで、自動再生画面を
表示するか、否かをWindowsに指示出来ます。

但し、他のソフトをクリックしたり、起動したりすると、フォーカスが
他のソフトに移動してしまうので、メッセージをトラップ出来ません。

Kobさんどでは、「WM_DEVICECHANGE」メッセージもトラップして、
「Message_QueryCancelAutoPlay」が送られてくる前に、Kobさんどを
アクティブにして、自身ににメッセージを送らせて、それを処理しています。

「WM_DEVICECHANGE」メッセージについては、ご自身で研究してください。


Kobロゴ