写了一个服务,带TRAYICON,一个FORM,有两个API写的多线程,问题是:点系统关机时,服务停不了.但手机net stop可以停.谁有这方面的经验....

解决方案 »

  1.   

    测试服务的时候用的都是
    net start 
    net stop
    命令方式,代码实现不太清楚
      

  2.   

    TService的OnStop是否写有代码?操作系统默认是调用这里来结束服务的。
      

  3.   


    有吖.  ResetEvent(hEvent);
      SetCanClose := True;
      FreeAndNil(ZKMMgrFrm);         
      Stopped := True;
      

  4.   

    ZKMMgrFrm 这个是桌面交换的窗口,里面API启动了两三个定时执行的线程(SetWaitableTimer).
      

  5.   


    net 命令没问题,正常启动和停止.现在要的是OS点关机或重起时,服务停不了,挡住了,导至无法关机或重起
      

  6.   

    汗~~ 不会汇编吖~~ 服务程序的断点是有,弹出CPU窗口,不会看汇编,郁闷.... 停在了 ret 那里
      

  7.   

    ret好熟悉啊,就是不知道啥意思
      

  8.   

    楼主的tservice的类哪来的,自己写的啊?
      

  9.   

    问题是,把所有的执行语句都设为断点,调试时,全部都是打勾,没问题吖~~ BTW,调试服务不像一般程序(会一步一步跑)..
      

  10.   

    再来一下,顺便给个链接看看, 能不能帮上忙http://www.tolderlund.eu/delphi/service/service.htm
      

  11.   

    启动服务,然后Attach上去试试
      

  12.   

    这里有一些编写系统服务的资料,供你参考一下:http://hi.baidu.com/sqldebug/blog/item/8e2749213082c0589922ed61.html
      

  13.   


    就是调过断点,弹出CPU对话框,偶不会汇编..... 所以才郁闷....
      

  14.   


    你的BLOG里的,晚上再看看,先谢过...
      

  15.   

    Attach是在DELPHI中打开源代码,然后用DELPHI->Run->Attach to Process...,这样就和调试普通程序一样了,看到的也是源代码,不是汇编。
      

  16.   

    看了你BLOG里的,跟我写的差不多..奇怪的是,客户那边竟然可以一次搞掂,我怀疑是我的OS问题,暂时不管啦,有空再研究研究..
      

  17.   

    问题早已解决,主要是接收到WINDOWS的关机消息时,设置一下CanClose就行了