随笔 - 809  文章 - 0 评论 - 144 阅读 - 770万

 

在 FormCreate首句加:
 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

 

复制代码
请问如何实现窗口不在任务栏上显示出来?
如QQ,启动后任务栏上并没他的图标(注意:不是托盘啊!)。
我现在想写个程序,启动窗体后不在任务栏上显示。请问如何
实现呢?用Setwindowlong函数么?知道的朋友能否说下?
我先谢谢了。












  “地震无情人有情”-玉树,让我们一起面对未来吧~

------解决方案--------------------------------------------------------

Delphi(Pascal) code

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(Application.Handle,   GWL_EXSTYLE,   WS_EX_TOOLWINDOW);
end;
                
复制代码

 

需要用到的一个函数:

LONG SetWindowLong( 
  HWND hWnd, 
  int nIndex, 
  LONG dwNewLong
);

其中nIndex GWL_EXSTYLE     Retrieves the extended window styles.
dwNewLong   WS_EX_TOOLWINDOW     Creates a tool window; that is, a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB. If a tool window has a system menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by typing ALT+SPACE.
有关dwNewLong的更多预定义值的含义,请自行查阅CreateWindowEx的帮助信息

 

在窗体创建事件中加入:

SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

如果要整个程序不在任务栏显示,可以在dpr工程文件中加入以上代码,例如:(需要引用Windows单元)

 

begin
  Application.Initialize;
  SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

 

解决了:

  把工程里的Application.MainFormOnTaskBar:=true ;
改为 Application.MainFormOnTaskBar:=False ;

在onshow 里加入:ShowWindow(Application.Handle, SW_HIDE); //不在任务栏显示
就搞定.

 

procedure TForm1.FormCreate(Sender: TObject); 
begin
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;

 

showwindow(application.handle,sw_hide);
setwindowlong(application.handle,gwl_exstyle,not   (getwindowlong(application.handle,gwl_exstyle,)   or   ws_ex_toolwindow   or   not   ws_ex_appwindow));
ShowWindow(HTaskbar,SW_SHOW)

隐藏

ShowWindow(HTaskbar,SW_HIDE); 

 

 

posted on   del88  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· 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训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示