CoolTrayIcon:如何彻底隐藏任务栏图标?

lyre 2007-04-27 10:06:36
已经设置了MinimizeToTray,在程序最小化时也确实能够隐藏任务栏图标。但我在右键菜单中打开一个新窗体时,任务栏图标又会重新出现。关闭后也会消失。我希望任务栏图标彻底消失(Winamp和QQ都能做到),请高手指点,谢谢!
...全文
5569 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyre 2007-04-29
  • 打赏
  • 举报
回复
明明已经结了帖的,怎么没有分数显示?
lyre 2007-04-28
  • 打赏
  • 举报
回复
谢谢Chen Zhuo,这个方法凑效了。只是又出现了新问题:我在托盘弹出菜单中打开一个新窗口时,原来出现在任务栏的图标这次不出现在任务栏了,改出现在桌面紧贴着任务栏的左下角,让我很是不爽。请Chen Zhuo及其他高手继续指点!
chenzhuo 2007-04-28
  • 打赏
  • 举报
回复
var
dwExStyle : DWORD;
begin
dwExStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE);
dwExStyle := dwExStyle + WS_EX_TOOLWINDOW;
SetWindowLong(Application.Handle, GWL_EXSTYLE, dwExStyle);

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
lyre 2007-04-28
  • 打赏
  • 举报
回复
这哪里是编程啊,明明是阿里巴巴的咒语 :-(
lyre 2007-04-28
  • 打赏
  • 举报
回复
好像行了,让我再试试。今晚就放分 :-D
HsWong 2007-04-28
  • 打赏
  • 举报
回复
我用这个参数做下实验。
dwExStyle := dwExStyle or WS_EX_TOOLWINDOW or WS_EX_LAYERED;
主窗口最小化或者关闭的时候,将它Hide
再打到其它窗口的时候,非常干净。
rainstormmaster 2007-04-28
  • 打赏
  • 举报
回复
//我说的情况是,选项窗口正常显示的时候,Application的窗口出现在任务栏或者桌面左下角,无法隐藏。

你翻翻前几天的帖子,好象谈到了这个问题,找不到的话,可以尝试利用ITaskbarList接口解决此问题
HsWong 2007-04-28
  • 打赏
  • 举报
回复
加多个参数:
dwExStyle := dwExStyle or WS_EX_TOOLWINDOW or WS_EX_LAYERED;
lyre 2007-04-28
  • 打赏
  • 举报
回复
另外,我试了一下手工创建窗口的方法:

procedure CreateWindowExx;
var
hWnd : THandle;
Msg : TMsg;
wndClass : TWndClass;
begin
wndClass.style := CS_HREDRAW or CS_VREDRAW;
wndClass.lpfnWndProc := @DefWindowProc;
wndClass.cbClsExtra := 0;
wndClass.cbWndExtra := 0;
wndClass.hInstance := hInstance;
wndClass.hIcon := LoadIcon(0, IDI_APPLICATION);
wndClass.hCursor := LoadCursor(0, IDC_ARROW);
wndClass.hbrBackground := HBRUSH(GetStockObject(WHITE_BRUSH));
wndClass.lpszMenuName := nil;
wndClass.lpszClassName := 'GettingStarted';

Windows.RegisterClass(wndClass);

hWnd := CreateWindow(
'GettingStarted', // window class name
'Drawing Opaque and Semitransparent Lines 1', // window caption
WS_OVERLAPPEDWINDOW, // window style
Integer(CW_USEDEFAULT), // initial x position
Integer(CW_USEDEFAULT), // initial y position
Integer(CW_USEDEFAULT), // initial x size
Integer(CW_USEDEFAULT), // initial y size
0, // parent window handle
0, // window menu handle
hInstance, // program instance handle
nil); // creation parameters

ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
end;

这个窗口在显示的时候不会导致Application窗口现身。不知道它与Delphi创建的窗口区别在哪里。Help!Help!
lyre 2007-04-28
  • 打赏
  • 举报
回复
谢谢HsWong,不过情况不是这样的。选项窗口是正常显示的,并未最小化。我说的情况是,选项窗口正常显示的时候,Application的窗口出现在任务栏或者桌面左下角,无法隐藏。
HsWong 2007-04-28
  • 打赏
  • 举报
回复
那个是最小化窗口,在选项窗口里加入:
Private
procedure OnMiniMize(var msg:TMessage);message WM_SYSCOMMAND;

procedure TOptionForm.OnMiniMize(var msg: TMessage);
begin
if LOWORD(msg.WParam)=SC_MINIMIZE then Close;
end;

//即当最小化选项窗口时,直接将其关闭
lyre 2007-04-28
  • 打赏
  • 举报
回复
是这样的:

我的希望我的程序正常运行时只显示托盘图标,因此使用了CoolTrayIcon并设置MinimizeToTray,然后主窗口最小化时任务栏图标会消失。可是当我在托盘菜单中打开新窗口时(如比选择“选项”菜单,然后打开一个窗口让用户设置选项),任务栏图标又会重新出现(新窗口关闭才任务栏图标也会跟着消失)。我不希望看到这种效果,于是发此帖求助。使用了Chen Zhuo的方法之后,程序图标不出现在任务栏了,改出现在桌面窗口最左下角:-(

继续求助。
constantine 2007-04-28
  • 打赏
  • 举报
回复
桌面紧贴着任务栏的左下角??有这样的事情。
你可以试试delphi带的trayicon看看会不会,高版本才有,可以去里面copy代码出来

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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