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