キーボードのキー「A」を押すことをエミュレートする C++ コードを書きたかったのです。
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "..." key
ip.ki.wVk = code; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Release the "..." key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
他のプログラムを起動してプログラムの実行を待つと、「A」がクリックされ、最初のプログラムがそれに反応します。しかし、他のアプリケーションでは、私のアクションが何らかの形で妨げられていることがわかりました (キーボードで手動で「A」を押すことはできますが、プログラムを使用してもアクションは発生しません)。
では、プログラムから「A」を押すことを、手動で「A」を押すのと同じにするために何ができますか(そのため、2 番目のプログラムはプログラムから呼び出されたことを認識しません)。
2 番目のプログラムのソース コードがなく、「A」が手動で押されていないことをどのように認識するのかわかりません。
コードに反応したいウィンドウがフォアグラウンドであり、キーを受け取ってブロックしていると確信しています(したがって、イベントがユーザーからではなくプログラムから来ていると判断できます)。