回答: 对于此方法,没有一个本机管理的等效物。但是,可以在 pinvoke.net.

大家好

我有一个接受“跟踪模式”标志的应用程序。跟踪模式打开包含文本框的表单。文本框通过自定义的tracelistener对象显示输出。如果命令行上存在-t,则跟踪窗口将从其自己的低优先级线程中打开。对于试图在出现问题时试图诊断应用程序的顾问来说,这很方便。

一些顾问要求在启动过程中按一些晦涩的键组合应打开跟踪模式,以便他们每次都不必转到命令行即可激活它。这是一个合理的要求。

我不想为此给他们一个按钮或菜单项,因为顾问将要关心的许多关键信息在创建主表单之前会在创建主表单之前进行跟踪,因为各种组件已实例化和初始化。

我认为在.NET中检测当前键盘状态应该很简单 - 但是似乎我在各处,建议是使用[dllimport(“ user32.dll”,entrypoint =“ getKeykeyboardState”,setlasterror = true) ]作为检测正在发生的事情的方法。

一切都很好 - 我对此感到满意。但是,作为一般的经验法则,我尝试确保在尝试滚动之前,在我尝试滚动之前,我将使用本机.NET托管代码用于Windows功能。

是否有本机.NET方法或相当于User32.dll的GetKeyboardState?

有帮助吗?

解决方案

Control.ModiferKeys 是静态属性 Control 如果有的话,当前按下修饰符键。我不知道要获得一般键盘状态 GetKeyboardState 或者 GetKeyState 用于检查特定的键。

其他提示

您确定PreviewKeyDownEventargs没有您需要的东西吗?如果是这样,则可以使用PreviewKeydown事件。

另一个选项可能是加速器键。 Windows API函数可以使用应用程序资源中的加速器表来将键盘序列映射到命令,其中命令与菜单项所做的相同。您知道,WM_Command消息。我知道使用C ++在MFC中很容易做到,但是当我尝试找到C#做到这一点时,我就迷路了。如果您可以弄清楚如何使用C#进行加速器键,那么它可能是一个灵活的解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top