解答:此方法没有本机管理的等效项。但是,可以在pinvoke.net上找到一个很好的托管代码 API 示例。
大家好
我有一个接受“跟踪模式”标志的应用程序。跟踪模式打开包含文本框的表单。文本框通过自定义 TraceListener 对象显示输出。如果命令行中存在 -t,则跟踪窗口将从其自己的低优先级线程中打开。对于在出现问题时尝试诊断应用程序的顾问来说,这很方便。
一些顾问要求在启动过程中按一些不起眼的组合键应该打开跟踪模式,这样他们就不必每次都去命令行激活它。这是一个合理的要求。
我不想为此给他们一个按钮或菜单项,因为顾问们关心的许多关键信息会在启动时在创建主窗体之前显示给 Trace,因为各种组件被实例化和初始化。
我认为它应该足够简单以检测 .NET 中的当前键盘状态 - 但似乎在我所看到的任何地方,建议是使用 [DllImport("user32.dll", EntryPoint = "GetKeyboardState", SetLastError = true) ] 作为检测正在发生的事情的方法。
这一切都很好——我对此很满意。但是,作为一般经验法则,我会尝试确保在尝试自行开发之前使用本地 .NET 托管代码来实现 Windows 功能。
是否有本地 .NET 方法或等效于 user32.dll 的 GetKeyboardState?