gpt4 book ai didi

C++ 生成组合键 WINAPI(无 MFC)

转载 作者:行者123 更新时间:2023-11-28 00:57:01 24 4
gpt4 key购买 nike

我试图让我的应用程序输出组合键 ( ALT + D ) 以专注于 Internet Explorer 地址栏,但我在实现所需代码时遇到了问题。我已经有一个方法来传递 1 个键:

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;
}

任何人都可以提供一些关于如何实现所需解决方案的帮助吗?

解决方案:

我设法使用以下方法解决了这个问题:

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;
}

然后这样调用它:

        GenerateKeyCombination(0x12, 0x44, FALSE, FALSE);

其中 0x12 是 ALT,0x44 是 D。

最佳答案

将加速器映射添加到您的项目资源,在运行时将其加载到您的应用程序中,并在您的消息循环中添加对 TranslateAccelerator 的调用,然后 TranslateMessage 和 DispatchMessage 才有机会查看它。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646373%28v=vs.85%29.aspx供引用。

关于C++ 生成组合键 WINAPI(无 MFC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com