-1

C++ のコードで新しい問題が発生しました。キーの切り替えなどを行うためのキープレスがあります...おそらくコードは私よりもよく説明します:

while (1) { 
    Sleep (1);
if (GetAsyncKeyState(VK_TAB) & 1) { 
    toggle = !toggle; 
if(toggle) 
    {
        code here...();
    }
else 
    {   
        code here...(); 
        }
    }
}

C++ ではすべて問題ありませんが、C# - WPF に移植するとクラッシュします。最も簡単な方法は何ですか?ありがとうございました、

編集 2: なぜ機能しないのですか? アクションのキーを登録しましたが、起動しません。私はすでにメソッドの中にいるからですか?

KeyboardHook hook = new KeyboardHook(); // take action on keys pressed. hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(fireUp); // register the event that is fired after the key press. hook.RegisterHotKey(ModKeys.None, Keys.Tab);

void fireUp(object sender, KeyPressedEventArgs e)
{
    bool toggle = false;
    toggle = !toggle;
    byte[] byt = { 0xC7,0x83,0x1A,0x05,0x00,0x00,0x00,0x00,0x00,0x00 };
for (int i = 6; i < 10; ++i)
    {
        byt[i] = (byte)(atkSpd & 0xFF);
        atkSpd = atkSpd >> 8;
    }
if (toggle)
    {
        Write(vMemory + 8, byt, 10);
        Write(vMemory, BitConverter.GetBytes((vMemory + 8)), 8);
        Write(atkBase, new byte[] { 0xFF, 0x24, 0x25 }, 3);
        Write(atkBase + 3, BitConverter.GetBytes((vMemory)), 4);
    }
else
    {
      Write(atkBase, new byte[] { 0x66, 0x89, 0xB3, 0x1A, 0x05, 0x00, 0x00 }, 7);
    }

}

4

2 に答える 2

1

KeyDown/KeyPress/KeyUpイベントを使用できない理由はありますか?

private void tabPress(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Tab)
    {
        if(toggle) 
        {
            code here...();
        }
        else 
        {   
            code here...(); 
        }
    }
}

私の意見では、これはより良いアプローチであり、言うまでもなく、より効率的です(常にチェックするわけではありません)。

あなたが投稿したアプローチを使用したい場合は、 while ループが無限であり、他に何も起こらないため、クラッシュが発生すると思います。クラッシュ時に発生する例外を提供するか、実際に何が起こるかについて少なくともいくつかの情報を提供していただければ助かります。

于 2013-08-14T23:29:49.157 に答える