私はちょうどC++を学び始めました。現時点で私はまだ解決策を見つけることができない小さなものに積み重ねています。私は誰かがこの問題について私を助けてくれることを願っています。C++で最小化されたウィンドウにキーを送る方法
私の目標:実行中のアプリケーションにいくつかのキーストロークを送信したい。しかし、アプリケーションにフォーカスがない場合、すなわち最小化された場合、またはこれまでに何が行われたのか、キーストロークは依然として である必要があります。
私の問題:私は(笑覚えていない)VK_KEY
またはこれまでに何と機能sendkey()
を使用する場合、それが機能していますが、ウィンドウが最大化されている場合のみ(焦点)が、私はPostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
何も起こらを使用していないしてみてください。
私はメモ帳で試してみましたが、動作させたいアプリケーションでも何もしませんでした。
私はプロセスにフックしてキーを送信する必要があると思いますが、残念ながら私はC++には問題ありません(あなたが完全にプロ笑いにならない限り)が、フックやそのようなものの経験はありません。
誰かが正しい方向に私を送ることができますか、Windowsゲームの1つなどで、そのようなことを行う方法に関する小さなチュートリアルを私に書いてください。
if(amount != 0)
{
// bring the window to the front
HWND GameWindow = FindWindow(0, L"Naamloos - Kladblok");
SetForegroundWindow(GameWindow);
// execute the loop
for(int i = 0; i < amount; i++){
// not the last loop so add a pause at the end
if(i < (amount-1))
{
PostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
PostMessage(GameWindow, WM_KEYUP, 'G', 0);
Sleep(2000);
}
// last loop so dont add a pause at the end
else
{
PostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
PostMessage(GameWindow, WM_KEYUP, 'G', 0);
}
}
}
エラーはチェックされません。 'FindWindow'が成功していますか?そのような 'SetForegroundWindow'は動作しません。ここのドキュメントを読んでください:http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx –
あなたの返信ありがとう!はい、それは動作している、私はポップアップウィンドウを参照してください、私はPostMessageのような何かの代わりにsendkeysを使用すると、それは正常に動作します;)コードは正しいので、それはPostMessageは何もしません。 ; – user1137770
まあ、このような入力を偽ったり、時にはうまくいきません。メモ帳内でEDITウィンドウをターゲットにすることができます。しかし、知っているあなたのゲームについては。おそらく、あなたがゲームへのインプットを偽造しようとしていた理由を説明したなら、私たちはよりうまく助けることができました。 –