カードが挿入されたダイアログはいらない

  • 投稿日:
  • by
  • カテゴリ:

影のプログラム指南役から、折角知恵をいただいているのだからと、Mass Storageモードから他に切り替えたときに出てくる「画像カードがさされたよ」というダイアログを抹殺する方法にトライしてみました。
要するに、Windowsが吐き出してくるメッセージを捕まえて、AutoPlayだったら、みなかったことにしてしまうというやり方です。

とりあえず、そういうコードを実装してみましたが、肝心のメッセージが流れてきてくれません。デバッガで、捕まえようとしてみたのですが、オーバライドされたWndProc()へ飛び込んできたのは、アプリを終了しようとしている時、しかも、狙ったメッセージではないものでした。トホホ。

using Microsoft.WindowsCE.Forms;
...
  internal class MsgWindowCancelAutoPlay : MessageWindow
  {
    [DllImport("coredll.dll")]
    public static extern UInt32 RegisterWindowMessage(string lpString);
    private UInt32 WM_QUERYCANCELAUTOPLAY =
      RegisterWindowMessage("QueryCancelAutoPlay");
    protected override void WndProc(ref Message m)
    {
      if (m.Msg == WM_QUERYCANCELAUTOPLAY)
      {
        m.Result = (IntPtr)1; // キャンセル
        return;
      }
      base.WndProc(ref m);
    }
  }
...
まだ、何かやり方が悪いに違いないが……。あと、このコードを追加すると10KBくらいフットプリントが大きくなるんですよね……。これも何とかしないとなぁ。