想做一个基于对话框的程序,程序启动以后自动隐藏于托盘,不显示对话框也不在任务栏显示图标;也就是达到程序“悄悄的运行”,只在托盘能看出来程序运行着呢。
这就要分两个部分来做,
一,程序启动对话框隐藏,任务栏图标不显示。
二,程序隐藏到托盘,双击托盘恢复对话框的显示,右击托盘直接关闭程序。
首先来做第一部分,在网上搜到的删除托盘图标都使用的ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); 也就是通过修改窗口格式来实现;我试了一下的确任务栏的图标不显示了,可是对话框上的最大化最小化图标也没了,为了保持对话框原有的模样,于是参考文章关于MFC程序中隐藏任务栏图标的问题,删除任务栏图标通过创建一个隐藏的窗口,然后设为主对话框的父窗口就行了,示例代码如下:
BOOL CxxxApp::InitInstance() { ...... CWnd m_wndOwner; if ( m_wndOwner.m_hWnd == NULL ) { LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0); if ( !m_wndOwner.CreateEx(0, pstrOwnerClass, _T(""), //创建一个隐藏的弹出样式的窗口 WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, 0) ) return FALSE; } //CsaveParamReportDlg dlg; CxxxDlg dlg(&m_wndOwner); // 以隐藏的窗口作为父窗口 m_pMainWnd = &dlg; ...... // 销毁隐藏的父窗口 if (m_wndOwner.m_hWnd!=NULL) { m_wndOwner.DestroyWindow(); } return FALSE; }
通过上边的操作,在对话框初始化的时候,就可以使用如下代码隐藏任务栏图标:
ModifyStyleEx(WS_EX_APPWINDOW, 0);//从任务栏中去掉图标
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人