winform中ShowInTaskbar设为false时,注册的热键失效的问题解决
2009-04-17 16:45
459 查看
最近一个项目需要实现通过热键控制界面的显示和隐藏的效果。抛开热键的问题,先来看界面的显示和隐藏,.net中通过以下两个方法实现:
//隐藏窗体,并不在任务栏显示
private void HideCurrentForm()
//显示窗体,并显示在任务栏上
private void ShowCurrentForm()
OK,经测试没有问题。下面来考虑热键的问题。查了一下MSDN,没有在.NET类库中找到注册和销毁热键的方法,于是决定调用WIN32 API来实现。搜索后得到以下代码:
protected override void WndProc(ref Message m)//监视Windows消息
//按下设定的键时调用该函数
private void ProcessHotkey(Message m)
其中CutOverForm()方法负责切换界面的显示。
但是,一测试,不好,当我通过热键将窗口隐藏后,无论如何也无法将其再次显示出来了。设断电,调试,发现第一次热键有效,第二次就无法触发热键了。反复测试发现当我把HideCurrentForm()中的ShowInTaskbar设为true时,则可以连续触发热键,但显然无法满足项目的需求。于是,继续搜索,发现也有人http://blog.csdn.net/Yasker/archive/2006/02/22/606294.aspx遇到了同样的问题,只要在代码中将ShowInTaskbar设为false,则热键立即失效,但找了很久也没有找到解决方案,于是,准备转向WIN32 API。在网上搜索到参考代码 http://read.pudn.com/downloads63/sourcecode/windows/csharp/222835/%CF%D4%CA%BE%D2%FE%B2%D8%B3%CC%D0%F2/WindowsApplication1/Form1.cs__.htm
private void HideCurrentForm()
//显示窗体,并显示在任务栏上
private void ShowCurrentForm()
运行,Ctrl + 0,来回切换,成功!困扰了自己好几天问题原来在这!!只是当改变ShowInTaskbar的属性为false,为何热键会失效呢?不知哪位可以帮忙解释一下?本人Form下的开发刚刚入门,实在是无从查起:(
//隐藏窗体,并不在任务栏显示
private void HideCurrentForm()
//显示窗体,并显示在任务栏上
private void ShowCurrentForm()
OK,经测试没有问题。下面来考虑热键的问题。查了一下MSDN,没有在.NET类库中找到注册和销毁热键的方法,于是决定调用WIN32 API来实现。搜索后得到以下代码:
protected override void WndProc(ref Message m)//监视Windows消息
//按下设定的键时调用该函数
private void ProcessHotkey(Message m)
其中CutOverForm()方法负责切换界面的显示。
但是,一测试,不好,当我通过热键将窗口隐藏后,无论如何也无法将其再次显示出来了。设断电,调试,发现第一次热键有效,第二次就无法触发热键了。反复测试发现当我把HideCurrentForm()中的ShowInTaskbar设为true时,则可以连续触发热键,但显然无法满足项目的需求。于是,继续搜索,发现也有人http://blog.csdn.net/Yasker/archive/2006/02/22/606294.aspx遇到了同样的问题,只要在代码中将ShowInTaskbar设为false,则热键立即失效,但找了很久也没有找到解决方案,于是,准备转向WIN32 API。在网上搜索到参考代码 http://read.pudn.com/downloads63/sourcecode/windows/csharp/222835/%CF%D4%CA%BE%D2%FE%B2%D8%B3%CC%D0%F2/WindowsApplication1/Form1.cs__.htm
private void HideCurrentForm()
//显示窗体,并显示在任务栏上
private void ShowCurrentForm()
运行,Ctrl + 0,来回切换,成功!困扰了自己好几天问题原来在这!!只是当改变ShowInTaskbar的属性为false,为何热键会失效呢?不知哪位可以帮忙解释一下?本人Form下的开发刚刚入门,实在是无从查起:(
相关文章推荐
- validationGroup和Page_ClientValidate()配合使用解决前端click事件返回为false时验证失效问题
- Flex Flash Builder 4 注册 (解决再进去失效的问题)
- C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法
- C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法
- 在Form Load中设置showInTaskBar =false 或 隐藏窗口 this.Hide()时会导致注册的全局快捷键无效
- memcached缓存失效时的高并发访问问题解决
- Linux 升级修改libc gcc 文件名称,导致执行命令失效问题解决
- asp.net自定义控件中注册Javascript问题解决方案
- 解决Custom backBarButtonItem 后 interactivePopGestureRecognizer失效的问题
- 在ubuntu 12.04系统中Mantis 1.3.4版本注册码不显示问题解决
- [转]解决C# WinForm 中 VSHOST.EXE 程序不关闭的问题
- jquery动态添加元素事件失效问题解决方法
- Delphi6 反复提示要注册的问题解决啦
- 关于spring使用new对象时注解失效问题解决办法
- WinForm解决多线程操作控件问题 线程间操作无效: 从不是创建控件的线程访问它"
- 解决MyEclipse注册失败的问题
- 解决WinForm(C#)中MDI子窗体最大化的问题(VB.net中也适用)
- 关于getChildStaticTransformation在android4.1失效问题解决方案(转)
- Winform注册热键(转)
- Visual Studio 2010 .NET 4.0 WinForm 下无法引用 System.Web.dll 问题的解决方法