1

次のコードを使用して、C# アプリケーションで ALT + TAB キー シーケンスをインターセプトしています。

関連するスニペット:

[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);

bool ret = RegisterHotKey(this.Handle, 0, MOD_ALT, 0x09);
Console.WriteLine("return value:" + ret);
Console.WriteLine("lasterror=" + Marshal.GetLastWin32Error());

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_HOTKEY)
        {
            MessageBox.Show("Generic hotkey interception");
            if (m.WParam.ToInt32() == 0)
            {
                MessageBox.Show("ALT+TAB intercepted");
            }
        }
        base.WndProc(ref m);
    }

2 番目のスニペットでは、ret はほとんど false ですが、MOD_ALT (0x01) を MOD_SHIFT (0x04) に置き換えると、ret が true になり、ホットキー インターセプトが機能します。

私がウェブで見た多くの例は、それらが機能すると述べているため、なぜこれが事実なのか疑問に思っていました。

4

2 に答える 2

1

0おそらく、Idパラメータを渡すことができませんか?IDH_ALTTAB、IDH_NEXT、またはIDH_PREVを指定する以下のリンクを参照してください。何に相当するのか…わかりません。

http://msdn.microsoft.com/en-us/library/ms997649.aspx#xpvisualstyles_topic3

于 2011-11-03T06:07:49.713 に答える
0

管理者として実行すると修正されました。

于 2011-11-04T01:40:10.743 に答える