禁止主应用程序的快捷键并发送击键仅形成

时间:2018-10-25 10:28:57

标签: c# winforms dll keyboard-shortcuts keystroke

我正在为名为CimatronE的3D应用程序编写C#类库API工具。我将此工具编写为Windows窗体。它是构建为.dll并从Cimatron内部运行的。

但是,当用户想要在Windows窗体的文本字段中输入一些文本并且击键之一实际上是Cimatron中某些内容的快捷方式时,它将被触发(可能是因为该窗体是从Cimatron内部运行的,而Cimatron确实可以实际上并未将其作为活动功能来处理。)

是否有一种变通方法,仅在激活和聚焦时才将击键路由到Windows窗体?还是抑制主应用程序的按键输入?还是实现同一目标的另一种方法?

针对以下评论进行编辑:

随之而来的一个问题可能是:如何在“模式”和“非模式”之间切换Windows窗体,我为此问题提出了一个新主题:Toggle a Windows Form between modal and non-modal

编辑,即使主应用程序被阻止,快捷键也不会被抑制:

我设法使用BOOL EnableWindow( HWND hWnd, BOOL bEnable );来使表格成为“模态” /阻止主应用程序。

文档引用:

  

启用或禁用对指定窗口或控件的鼠标和键盘输入。

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-enablewindow

由于鼠标输入被抑制,但不幸的是,尚未将键盘输入到主应用程序,因此它部分起作用。

还有其他线索吗?

0 个答案:

没有答案