1

私はアプリケーションを開発しており、USB デバイス (MASS STORAGE) を検出したいのですが、そのメッセージをキャプチャして Windows に渡さないようにする必要があります。パスワードを尋ねたいのですが、それでよければウィンドウにメッセージを渡したいです。それ以外の場合は破棄します。どうすればそれを達成できますか

protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m); break;
}
base.WndProc (ref m);
}

void OnDeviceChange(ref Message msg)
{
int wParam = (int)msg.WParam;
if (wParam == Win32.DBT_DEVICEARRIVAL)
{
    label1.Text = "Arrival";
    //MessageBox.Show("" + wParam);
    //msg = Message.Create(new IntPtr(),1,new IntPtr(),new IntPtr());
}
else if (wParam == Win32.DBT_DEVICEREMOVECOMPLETE) label1.Text =
 "Remove";
}
4

1 に答える 1

0

ソフトウェアが低レベルのアプリケーションとしてリング 0 (または 1、覚えていない) 保護レベルで実行されていない限り、Windows がハードウェアを検出するのを防ぐことはできません。

これは、C# ではなく、低レベルのプログラミング (C、ASM) でのみ実現できます。IL 言語では、ユーザーがやりたいことを実行することはできません。

とにかく、あなたがしていることは、フォームの基本クラスへのメッセージをスキップすることだけです。必要かどうかに関係なく、システムはこのようなメッセージを他のアプリケーションに送信し続けます。

于 2012-05-24T08:12:56.230 に答える