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

  • 主题发起人 主题发起人 kk2000
  • 开始时间 开始时间
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我写一个托盘程序,在托盘程序运行时系统无法关闭或者重启.不知道大家遇到过吗?<br>怎么解决? 我捕捉了关机消息都不行! 郁闷.<br> &nbsp;WM_QueryEndSession 设置 msg.Result :=1; &nbsp;这样是不行的.
 
在托盘程序运行时系统无法关闭或者重启?<br>你的程序是做什么事?你跟踪进去看看;在关机或重启的时候是什么东西拦截了!<br>找出来之后,可以在被拦截的位置用强制关机或重启;
 
TO: 清新空气 我的程序没有做什么东东,只是监控每个操作用户是否接到通知.<br>如果他接到通知我就显示一个通知窗口给他查阅. 很简单的.
 
那应该不会拦截关机的消息呀!?<br>你跟踪过没有?是在哪步被拦截的?
 
楼主在大富翁里搜索一下以前的文章,里面有不少是关于系统托盘程序的,应该能找到答案,另外,自己写这些托盘程序浪费时间和精力,不如找一个COOLTRAYICON控件,弄到程序里功能又多又稳定,省时省力,何乐而不为呢?
 
不过我再主窗口处理这个消息<br>procedure WMSYSCOMMAND(var Message: TWMSysCommand);message WM_SYSCOMMAND;<br>处理了最小化隐藏, 关闭也隐藏. 就是这样 后面也inherited 了.<br>难道是这个做怪
 
TO: weiliu 可是我现在都准备全部完成了. 就差这个关机和重启动的问题.<br>我想自己来解决!
 
这没有关系的!<br>我也做过托盘程序!没有出现这样的问题!<br>to weiliu<br>你怎么老是这样!找以前的!不一定情况都一样啥!
 
TO: 清新空气 我这个不能关机和重启动的问题, 是指在没有退出托盘程序时才发生的.<br>但我先退出托盘程序的话,就没有问题了. 现在我拦截关机消息在消息里面退出了托盘程序.<br>但是关机还是不行. 也就是说用户第一次关机只是退出了托盘程序.第二次关机才能正常<br>关机.
 
是不是你的主form中的FormClose中,Action ;= caNone;還是FormCloseQuery中CanClose ;= false,具體記不清楚了,請檢查
 
TO: boldfake,<br> &nbsp;没有的.
 
楼主不如把你的托盘程序拿出来,让大家看看。
 
用个控件马上解决
 
不知道你是怎么写了,今天试了一下 我用的是TRZTrayIcon控件,是可以的<br>unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> &nbsp;Dialogs, RzTray, StdCtrls, Menus;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp; &nbsp;RzTrayIcon1: TRzTrayIcon;<br> &nbsp; &nbsp;Button1: TButton;<br> &nbsp; &nbsp;PopupMenu1: TPopupMenu;<br> &nbsp; &nbsp;N1: TMenuItem;<br> &nbsp; &nbsp;N2: TMenuItem;<br> &nbsp; &nbsp;procedure FormCreate(Sender: TObject);<br> &nbsp; &nbsp;procedure Button1Click(Sender: TObject);<br> &nbsp; &nbsp;procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br> &nbsp; &nbsp;procedure N1Click(Sender: TObject);<br> &nbsp; &nbsp;procedure N2Click(Sender: TObject);<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp;public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br> &nbsp;NowIsShow: Boolean;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br> &nbsp;NowIsShow := True; &nbsp; //不允许关闭<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> &nbsp;NowIsShow := false; &nbsp;//关闭<br>end;<br><br>procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>begin<br> &nbsp;if NowIsShow then<br> &nbsp;begin<br> &nbsp; &nbsp;RzTrayIcon1.MinimizeApp;<br> &nbsp; &nbsp;CanClose := False;<br> &nbsp;end<br> &nbsp;else<br> &nbsp; &nbsp;CanClose := True;<br>end;<br><br>procedure TForm1.N1Click(Sender: TObject); &nbsp;//快捷菜单的'退出'<br>begin<br> &nbsp;NowIsShow := False;<br> &nbsp;Close;<br>end;<br><br>procedure TForm1.N2Click(Sender: TObject); &nbsp;//快捷菜单的'打开'<br>begin<br> &nbsp;RzTrayIcon1.RestoreApp;<br>end;<br><br>end.
 
to 清新空气:<br>前人留下了大量宝贵的财富你不用是为什么?你该不会用电脑的时候也要想着应该把自己的电脑拆掉后再把每个电子零件拼出来吧。
 
难道你对别人提出的问题就没有一点自己的方法,意见吗?
 
to 清新空气,<br>我水平不高,没有这本事,你有本事的话可以把DELPHI本身重写一次。
 
你这不是抬扛吗?<br>往往大家都是在实践的过程中总结问题;都想知道自己错在哪儿,不是只一味的照葫芦画瓢;而要能理解,能把代码写的更优化!否则你也不会到DFW来提问题了吧?<br>你说是不?<br>比如:大家都知道去用控件,有些控件有bug,如果只是听别人说看别人的,不是只知道有bug,而不知道bug的原因,如果是你自己发现的bug,自已修正的,难道不是比听别人说的记的更牢靠吗?
 
上面的弟兄说得好,支持一下。
 
刚写木马时。电脑就是不能关闭。好容易修改过来。现在都不知道当时为什么不能关闭
 
后退
顶部