ShowInTaskbar = false与API -> RegisterHotKey()冲突

linmilove 2009-04-22 05:36:05
我有一程序要求
       注册系统热键-->调用API:RegisterHotKey()
      不显示在任务栏,按Alt+Tab键都不显示 -->this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
                         this.ShowInTaskbar = false;//启用这一句热键就不能用了

但是用了:ShowInTaskbar = false 后注册的系统热键无效了,请问还有其他方法可以注册系统热键
              或 调用API让程序不显示在任务栏 且 在按下Alt+Tab 不显示程序图标
...全文
443 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-07-18
  • 打赏
  • 举报
回复
为什么会这样呢?能详细说明一下就好了。
兔子-顾问 2010-07-18
  • 打赏
  • 举报
回复
原来是这样,学习了。不知道这还有区别。。
xufzu123 2009-04-23
  • 打赏
  • 举报
回复
关注+学习+up~~
boywangliang 2009-04-23
  • 打赏
  • 举报
回复
i学习
gomoku 2009-04-23
  • 打赏
  • 举报
回复
我猜测你RegisterHotKey后才设置ShowInTaskbar=false的。

改变ShowInTaskbar需要另一种风格的窗口,所以它的内部实现是重新创建窗口
也就是说Form的窗口句柄将发生改变,比如下面代码: i != j :


int i = this.Handle.ToInt32();
this.ShowInTaskbar = ! this.ShowInTaskbar;
int j = this.Handle.ToInt32();


我怀疑你用了this.Handle去登记RegisterHotKey(),结果WM_HOTKEY通知被发送到旧的窗口句柄了。

解决方法:
方法一、尝试先设置ShowInTaskbar,然后登记热键。
方法二、传入IntPtr.Zero(通知到当前线程,而不是具体窗口),然后Application.AddMessageFilter来处理通知。
内容概要:本文档为成都科洛威尔科技有限公司生产的MIL-1394B仿真板卡的API函数使用手册,详细介绍了该板卡在Windows和Linux环境下进行MIL-1394B/AS5643总线协议仿真和测试所需的API函数、数据结构、使用流程及例程。板卡支持CC(控制计算机)、RN(远程节点)和BM(总线监控)三种工作模式,提供丰富的函数用于设备管理、节点控制、消息收发、故障注入、中断处理等功能,并涵盖数据包格式、发送接收流程、错误检测机制等关键技术细节。手册还提供了函数调用示例和典型应用场景,帮助开发者快速掌握板卡的开发与调试。; 适合人群:从事航空电子、嵌入式系统或工业自动化领域,具备C/C++编程基础并熟悉总线通信协议的1-3年工作经验的软硬件研发工程师。; 使用场景及目标:①在复杂总线环境中实现高精度数据仿真与测试;②开发基于MIL-1394B协议的通信系统;③进行消息收发控制、时序偏移管理、错误注入测试及中断响应处理等高级功能验证;④通过API调用实现对板卡工作模式、数据流、状态监测的全面控制。; 阅读建议:建议结合配套的demo示例程序进行实践,重点理解各函数的调用时序与参数配置逻辑,尤其关注STOF时序控制、消息发送模式、错误注入机制等核心功能的实现原理。使用前需仔细阅读“基本使用流程”与“附录”部分,确保正确配置硬件环境与通信参数。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧