2011-07-09 37 views
0

ゲームウィンドウでキーをシミュレートする必要があります。私は、キー「A」を送信しようとするが、それは動作しません:Windows 7 x64でPostMessageが動作しない

[DllImport("user32.dll", SetLastError = true)] 
static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

[DllImport("USER32.DLL")] 
public static extern bool SetForegroundWindow(IntPtr hWnd); 

[DllImport("user32.dll")] 
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 

private void button1_Click(object sender, EventArgs e) 
{ 
    IntPtr hWnd = FindWindow(null, "Game Name"); // it's work! 

    if (hWnd == IntPtr.Zero) 
    { 
     MessageBox.Show("Game is not running"); 
     return; 
    } 

    SetForegroundWindow(hWnd); // it's work too and now I have active window of game 
    System.Threading.Thread.Sleep(3000); 

    const int WM_KEYDOWN = 0x0100; 
    PostMessage(hWnd, WM_KEYDOWN, (IntPtr)Keys.A, IntPtr.Zero);  // don't work ;-(
} 

答えて

3

あなたはどのようなエラーが出るのですか?ゲームは管理者として実行されていますか? UIPIによってブロックされる可能性があります。

+0

エラーはありません。 Spy ++ではキーボードのログが空です。私はそれが他の類似のプログラムが問題なくこのゲームで動作するブロックcuzだとは思わない。 –

+0

申し訳ありませんが、私の間違いです。管理者権限でVisual Studioを実行するのを忘れた –

関連する問題