从键盘获取一些输入到我的 C++ 应用程序,同时捕获应用程序未打开(最小化)[关闭]

问题描述 投票:0回答:1

知道如何使用异步键输入,但仍然无法将输入发送到应用程序,当前未打开哪个窗口 请指教

尝试过异步键输入,它可以工作,但我需要最小化当前应用程序

c++ winapi input
1个回答
-1
投票

QT 和 C# 对此有很多选择,但在本机 Win32 C++ 中,我认为,可能有两种方法可以做到这一点。

  1. 使用窗口定时器
  2. 使用线程(不推荐)

以合理的间隔使用计时器似乎是更好的选择,因为线程可能会消耗不必要的 cpu 量。

1。使用定时器的例子:

void CALLBACK MonitorKey(){

  // Monitor Key state here

}

然后通过将此代码放入 main 或 WinMain 中来触发计时器

SetTimer(NULL,0,100,(TIMERPROC)MonitorKey); // 100 means the function will be triggered each 100ms

2。另一个使用线程的例子:

DWORD WINAPI MonitorKey(void*arg){

// Monitor Key state here

}

然后像这样从 main 或 WinMain 启动线程。

CreateThread(NULL,0,MonitorKey,NULL,0,NULL);

最后我想重申,第一种方法可能比第二种方法更好更安全,原因在上面已经描述过。

另请阅读Win32 Timers MSDN

© www.soinside.com 2019 - 2024. All rights reserved.