我正在为Windows编写键盘记录程序。我打算用GetAsyncKeyState(KEY)和一个隐藏的控制台来获取按下的键。在确定按键后,我将使用GetForegroundWindow获取当前聚焦的窗口,并在按下该键时识别哪个程序在顶部。我还希望能够区分按键和其他类型的输入。有办法吗?怎么样?
我不是在写恶意软件。这是高级编程课程中的作业。
答案 0 :(得分:0)
如果前台应用使用标准的Win32 UI控件,请尝试以下操作:
GetForegroundWindow()
获取前景窗口的HWND
。GetWindowThreadProcessId()
和GetGUIThreadInfo()
来获取前景窗口当前关注的子控件。GetClassName()
检查它是否是标准EDIT
控件(在某些UI框架中此检查可能会失败!您可能必须使用UI Automation API来检测控件类型)GetWindowLong/Ptr()
检查是否已应用ES_PASSWORD
样式。但是,如果前台应用程序没有使用标准的Win32 UI控件,和/或是自定义绘制它们等,那么所有的赌注都会关闭。