C++ 如何用C++;在窗户上
我是编程新手,目前我正在使用以下代码来监听我的击键:C++ 如何用C++;在窗户上,c++,windows,winapi,C++,Windows,Winapi,我是编程新手,目前我正在使用以下代码来监听我的击键: #包括 #包括 int main() { 而(1) { 句柄hInput=GetStdHandle(标准输入句柄); DWORD NumInputs=0; DWORD InputsRead=0; bool running=true; 输入/输出; GetNumberOfConsoleInputEvents(hInput和NumInputs); 读控制台输入(hInput、&IRIPUT、1、&InputsRead); 开关(irInput.E
#包括
#包括
int main()
{
而(1)
{
句柄hInput=GetStdHandle(标准输入句柄);
DWORD NumInputs=0;
DWORD InputsRead=0;
bool running=true;
输入/输出;
GetNumberOfConsoleInputEvents(hInput和NumInputs);
读控制台输入(hInput、&IRIPUT、1、&InputsRead);
开关(irInput.Event.KeyEvent.wVirtualKeyCode)
{
案例VK_F1:
卖出期权(“F1”);
打破
案例VK_F2:
卖出期权(“F2”);
打破
案例VK_F3:
看跌期权(“F3”);
打破
案例VK_F4:
看跌期权(“F4”);
打破
}
}
}
然而,即使我的终端没有焦点,我也需要一个事件监听器。这可能吗?您可以使用WH\u-KEYBOARD\u-LL
并为该钩子设置相应的钩子函数,以对应于所需的键
下面是一个示例,您可以不聚焦地听键盘:
#include <windows.h>
#include <stdio.h>
HHOOK _k_hook;
LRESULT __stdcall k_Callback1(int nCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT key = (PKBDLLHOOKSTRUCT)lParam;
//a key was pressed
if (wParam == WM_KEYDOWN && nCode == HC_ACTION)
{
switch (key->vkCode)
{
case VK_F1:
puts("F1");
break;
case VK_F2:
puts("F2");
break;
case VK_F3:
puts("F3");
break;
case VK_F4:
puts("F4");
break;
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main()
{
_k_hook = SetWindowsHookExA(WH_KEYBOARD_LL, k_Callback1, NULL, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
}
if (_k_hook)
UnhookWindowsHookEx(_k_hook);
return TRUE;
}
#包括
#包括
胡克胡克;
LRESULT uu stdcall k_Callback1(int-nCode、WPARAM-WPARAM、LPARAM-LPARAM)
{
PKBDLLHOOKSTRUCT key=(PKBDLLHOOKSTRUCT)lParam;
//按了一个键
如果(wParam==WM\U键控和&nCode==HC\U动作)
{
开关(键->vkCode)
{
案例VK_F1:
卖出期权(“F1”);
打破
案例VK_F2:
卖出期权(“F2”);
打破
案例VK_F3:
看跌期权(“F3”);
打破
案例VK_F4:
看跌期权(“F4”);
打破
}
}
返回CallNextHookEx(NULL、nCode、wParam、lParam);
}
int main()
{
_k_hook=setWindowshookxa(WH_键盘LL,k_回调1,NULL,0);
味精;
while(GetMessage(&msg,NULL,0,0)!=0)
{
}
如果(_k_钩)
解开钩(_k_钩);
返回TRUE;
}
通过SetWindowsHookEx()
或RegisterRarWinPutDevices()
使用键盘挂钩可能是一个解决方案,具体取决于您的用例。您好,如果这个答案确实对您有帮助,请随时标记它以帮助有相同问题的人,如果您有任何问题,请告诉我。谢谢。