有时候无法关机及SHBrowseForFolder问题(100分)

  • 主题发起人 主题发起人 peng_qs
  • 开始时间 开始时间
P

peng_qs

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,<br>&nbsp; &nbsp; 我在做一个通讯项目时,我们的QA发现一个奇怪现象,那就是有时候在我的程序启动后会<br>导致WINDOWS无法关机.我是在收到WM_QUERYENDSESSION后执行退出的.但发现有时WINDOWS<br>关机时收不到这个消息,为什么?<br>&nbsp; &nbsp;另外,我在用SHBrowseForFolder API函数时也有个奇怪现象,那就是在德文95上总是不能正常显示,而在<br>英文95,法文95上,98上都没问题.不知哪为大侠有过这方面的经验.<br>
 
各位大侠:<br>&nbsp; &nbsp; 对于上面问题中关不了机的问题,我经过跟踪发现是因为我的程序没用收到WM_QueryEndSession<br>消息,我是在此消息处理函数中结束我的程序,并将Msg.Result := 1来运行系统关机的. 我感到奇怪的是<br>为什么有时候会收不到这个消息,但是只要在我的程序上点击下右键菜单就可以.我的程序是个位于右下脚<br>Tray区的托盘程序. 尤其在WIN98刚启动还未彻底完成时点击关机经常会出现这个情况.一旦出现就<br>再也无法关机.除非点击或者关掉我的程序.
 
我的同事以前也碰到过这个情况<br>关注
 
有没有用到FastNet的那套东西?如果用了的话,那就活该你倒霉了,我除了表示同情外<br>再没有别的办法。
 
好象如果用了 ShowWindow(Application.Handle, SW_HIDE) 隐藏程序后会收不到这个消息。
 
感谢各位关注,我没用用Fastnet控件,只是一个小托盘程序,里面用到了SPCOMM控件.
 
你的程序中是否使用了多线程,平时有另外一个线程在干活?<br>如果是的话,那个线程中有否PROCESSMESSAGES?有否适当的SLEEP?<br><br>因为这一原因,我曾经试过系统函数CALLBACK滞后的现象。<br><br>不过我写的东西就从来都没有试过收不到ENDSESSION消息。<br>
 
我在做IC卡记费系统时遇到此问题,其实,如果你看过,一些控件,比如Spcomm,UDP,Rx等源代码不难发现解决问题的办法,实际上控件.消息处理机制和先后次序等问题综合形成的,呵呵,正忙,有需要可Email索求
 
截获系统消息,关机前释放udp就能关掉了(我也碰见过一次:))。<br>差不多像下面这样,你试试吧:)<br>procedure tform1.wmqueryendsession(var msg:tmessage);<br>begin<br><br>&nbsp; if msg.wParam=//写上消息类型,对不起,我记不清了,<br>then<br>&nbsp; &nbsp;nmudp1.free;<br>&nbsp; //自己关闭udp;<br>&nbsp; //响应退出消息,由你自己处理<br>&nbsp;inherited;<br>end;
 
多人接受答案了。
 
后退
顶部