【发布时间】:2013-04-04 21:57:48
【问题描述】:
我有一个托盘应用程序(用 C# 编写),它控制(启动/停止)我在桌面上的活动的监控。监控的活动被记录到日志文件中。每当访问文件时,Atm 都会根据对当前文件长度的更改记录有关编辑的信息。我想使用一种更简洁的方法,基于在窗口处于焦点时是否记录了击键。 提前致谢。
【问题讨论】:
我有一个托盘应用程序(用 C# 编写),它控制(启动/停止)我在桌面上的活动的监控。监控的活动被记录到日志文件中。每当访问文件时,Atm 都会根据对当前文件长度的更改记录有关编辑的信息。我想使用一种更简洁的方法,基于在窗口处于焦点时是否记录了击键。 提前致谢。
【问题讨论】:
仅在 C# 中是不可能的,您需要一个非托管 dll 来安装 Windows 挂钩 (SetWindowsHookEx) 并将该 dll 注入目标进程。
我认为this article 中描述了您要查找的内容。当您的应用程序启动/结束时代码安装和卸载钩子,并在每次按下键时调用Console.WriteLine((Keys)vkCode)。您可以在代码中更改该点; vkCode 包含按下键的虚拟键代码。您可以将其转换为System.Windows.Forms.Keys,然后使用System.Windows.Forms.KeysConverter。
【讨论】: