ゲーム用の簡単なボッティング プログラムを作成しようとしています。ゲームがフォーカスされていない場合や最小化されている場合でも、これが機能することを望みます。このため、SendInput() はグローバル イベントをシミュレートするため、使用できません。これを機能させるには、PostMessage() 関数を使用する必要があることがわかりました。メモ帳での入力をシミュレートするテスト プログラムを作成しました。
#include <Windows.h>
HWND handle = FindWindow(NULL,CStringW("Untitled - Notepad"));
HWND edit = FindWindowEx(handle, NULL, CStringW("Edit"), NULL);
PostMessage(edit, WM_CHAR, 'a', 0 );
この例では、メモ帳がフォーカスされていないか最小化されている場合でも、メモ帳で "a" のクリックを正常にシミュレートします。同様に、マウスイベントも機能するようになりました。
しかし、自分のゲームでこれと同じことをしようとすると、クリック コマンドを送信できません。調査の結果、元のハンドルは取得されているが、FindWindowEx() を呼び出すとアクセス許可が拒否され、ハンドルが返されないことがわかりました。
この機能をブロックする場合、別のプロセスへの「編集」アクセスを取得する方法はありますか?