RegisterHotKey不能使用不可见形式(c#)一个功能。我正在使用RegisterHotKey来设置全局键盘快捷键,如果与图标关联的主窗体可见,它就可以正常工作。但如果窗体不可见,则永远不会调用WndProc方法。有任何想法吗?编辑:我所说的“隐藏”的意思是在主窗体中添加以下内容:boolregistered=hotKey.Register();可见=假;ShowInTaskbar=false;base.OnLoad(e);}“registered”显示为“true”,如果我省略“Visible=false”,快捷键工作正常,“ShowInTaskbar=false;”。Winforms对winapi有非常严格的限制。窗口的某些属性只能在创建窗口时指定,以后不能更改。或者换句话说,它们在本机CreateWindowEx()调用中指定。它通过再次调用CreateWindowEx()来解决它。或者换句话说,销毁现有窗口并重新创建它。这是一个很好的技巧,但它确实有一些副作用。例如,当新窗口绘制自身时,您会看到一点点闪烁。例如,可以看到一些更大的副作用。树视图。重新创建时,所有节点都会崩溃。很难避免,原来的窗口有太多的状态。对于Form来说,ShowInTaskbar属性就是这样一个属性。还有RightToLeft、FormBorderStyle、ControlBox等。最相关的副作用是您遇到的副作用。重新创建窗口总是会更改Handle属性,这是不可避免的。当您使用RegisterHotKey()或使用它的库时,winapi调用使用窗口句柄并且出错。因此,当Winforms销毁该窗口时,将永远不会再有回调。这很容易修复,您只是使用了错误的事件处理程序。相反,在OnHandleCreated方法的重写中调用它。它在重新创建窗口时重新运行。另一个简单但不太可靠的修复方法是仅在构造函数中设置ShowInTaskbar等属性。问题是将ShowInTaskbar设置为false会更改窗口句柄,这意味着传递给RegisterHotkey的hwnd不再有效。设置ShowInTaskBar后注册热键工作正常。以上是C#学习教程:RegisterHotKey无法使用隐形表格(c#)分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: