私はアプリケーションにInternet Explorerのアドレスバーに焦点を合わせるためにキーの組み合わせ(Alt + D)を出力しようとしていますが、必要なコードを実装する際に問題があります。私はすでに1つのキーを渡す方法を持っています:C++生成キーの組み合わせWINAPI(MFCなし)
void GenerateKey(int vk, BOOL bExtended) {
KEYBDINPUT kb = {0};
INPUT Input = {0};
/* Generate a "key down" */
if (bExtended) { kb.dwFlags = KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
/* Generate a "key up" */
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
return;
}
誰も希望の解決方法を達成するための助けを提供できますか?
SOLUTION:
void GenerateKeyCombination(int vk, int vk2, BOOL bExtended, BOOL bExtended2) {
KEYBDINPUT kb = {0};
INPUT Input = {0};
KEYBDINPUT kb2 = {0};
INPUT Input2 = {0};
// Generate a "key down" 1
if (bExtended) { kb.dwFlags = KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
// Generate a "key down" 2
if (bExtended2) { kb2.dwFlags = KEYEVENTF_EXTENDEDKEY; }
kb2.wVk = vk2;
Input2.type = INPUT_KEYBOARD;
Input2.ki = kb2;
SendInput(1, &Input2, sizeof(Input2));
// Generate a "key up" 1
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
// Generate a "key up" 2
ZeroMemory(&kb2, sizeof(KEYBDINPUT));
ZeroMemory(&Input2, sizeof(INPUT));
kb2.dwFlags = KEYEVENTF_KEYUP;
if (bExtended2) { kb2.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
kb2.wVk = vk2;
Input2.type = INPUT_KEYBOARD;
Input2.ki = kb2;
SendInput(1, &Input2, sizeof(Input2));
return;
}
そしてそうのようにそれを呼び出す:0x12をはALTと0x44のです
GenerateKeyCombination(0x12, 0x44, FALSE, FALSE);
がある私は、次の方法を使用してこの問題を解決するために管理
D.
私はwinapiを知らないのですが、2回のキーダウンイベントを提供しようとしましたか? – PlasmaHH
それは私がやろうとしてきたことですが、そのことだけではなく、私のために働いています。私は4つの引数を取るが、Alt + Dはまだ動作していない2番目のメソッド 'GenerateKeyCombination'を追加しました。それはアドレスバーの代わりにクロムの設定アイコンを選択します。 – L337BEAN