如何删除任务栏图标(100分)

  • 主题发起人 主题发起人 coollucy
  • 开始时间 开始时间
C

coollucy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想删除我得应用程序在任务栏的图标,如何做?谢谢各位大虾!
 
shell_notifyicon(NIM_DELETE,YourNid);<br>
 
多谢,请告诉我这两个参数是什么意思吗?我现在想让我得应用程序一运行就只在<br>系统托盘里显示一个图标,而在任务栏里不显示,桌面上也不显示.我现在只是做到<br>在托盘显示在任务栏不显示但在屏幕的左下方有最小化的窗口显示,我怎么也去不掉.<br>请教了!多谢!!!
 
程序缩小为任务条右下角的小图标<br>http://www.pickweb.com 2000年04月20日 <br><br><br>--------------------------------------------------------------------------------<br><br>某些程序运行启动后并不出现在任务条中,而是缩小为任务条右下角的一个小图标,当鼠标移到这个小图标上时会出现一些提示信息、单击该小图标会执行一些特定的操作。便如任务条右下角的小喇叭图标,单击它会弹出一个简单的音量控制条,双击会启动另一个更大的音量控制程序。 <br>  在Shell32.DLL动态链接库中包括一个函数Shell_NotifyIconA()可通知Windows在任务条右下角加入一个小图标,可惜该函数的详细说明未收入Delphi的帮助文档中,下面以一个简单的实例来说明如果使用该函数。<br><br>unit Unit1; <br><br>interface <br><br>{ 记住在uses部分中包括 ShellAPI} <br>uses <br>Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, StdCtrls; <br><br>{自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息} <br>const MY_MESSAGE = WM_USER + 100; <br><br>type <br>TForm1 = class(TForm) <br>procedure FormCreate(Sender: TObject); <br>procedure FormClose(Sender: TObject; var Action: TCloseAction); <br>procedure FormPaint(Sender: TObject); <br>private <br>procedure OnIconNotify(var Message: TMessage); <br>message MY_MESSAGE; <br>public <br>{ Public declarations } <br>end; <br><br>var <br>Form1: TForm1; <br><br>implementation <br><br>{$R *.DFM} <br><br><br>{当小图标捕捉到鼠标事件时进入此过程} <br>procedure TForm1.OnIconNotify(var Message: TMessage); <br>const <br>Busy: Boolean = false; <br>begin <br>if not Busy then begin <br>Busy := true; <br>if Message.LParam=WM_LBUTTONDOWN then <br>if Application.MessageBox('Are you sure', <br>'Exit', MB_YESNO)=IDYES then Close; <br>Busy := false; <br>end; <br>end; <br><br>{当主Form建立时通知Windows加入小图标} <br>procedure TForm1.FormCreate(Sender: TObject); <br>var <br>nid: TNotifyIconData; <br>begin <br>nid.cbSize := sizeof(nid); // nid变量的字节数 <br>nid.Wnd := Handle; // 主窗口句柄 <br>nid.uID := -1; // 内部标识,可设为任意数 <br>nid.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指?<br>nid.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指?<br><br>nid.szTip := 'This is a test application'; // 提示字符串 <br>nid.uCallbackMessage := MY_MESSAGE; // 回调函数消息 <br>nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有?<br><br>if not Shell_NotifyIcon(NIM_ADD, @nid) then begin <br>ShowMessage('Failed!'); <br>Application.Terminate; <br>end; <br>{将程序的窗口样式设为TOOL窗口,可避免在任务条上出现} <br>SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); <br>end; <br><br>{程序被关闭时通知Windows去掉小图标} <br>procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); <br>var <br>nid: TNotifyIconData; <br>begin <br>nid.cbSize := sizeof(nid); // nid变量的字节数 <br>nid.cbSize := sizeof(nid); // nid变量的字节数 <br>nid.uID := -1; //内部标识,与加入小图标时的数一致 <br>nid.Wnd := Handle; //主窗口句柄 <br>Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标 <br>Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标 <br>end; <br><br>{主窗口初始化完毕并显示时将激活Paint重画事件,此时将主窗口隐藏} <br>procedure TForm1.FormPaint(Sender: TObject); <br>begin <br>Hide; <br>end; <br><br>end. <br><br><br><br>  上例中将程序的图标放在任务条右下角,然后隐藏自身,当用户移动鼠标至该图标上时会看到提示字符串,如果单击该图标会出现一个对话框,选择Yes退出程序并清除小图标。 <br>
 
或<br>&nbsp;application.ShowMainForm:=false;//任务栏不显示<br>&nbsp; application.ShowMainForm:=true;//任务栏显示
 
多谢了!
 
后退
顶部