TService不支持(它用的是RegisterServiceCtrlHandler)。你可以自己调用RegisterServiceCtrlHandlerEx等待SERVICE_CONTROL_SESSIONCHANGE通知

解决方案 »

  1.   

    按这个方法测试部成功。查阅MSDN,还是不行。能否给个例子,能够获得LOGON通知信息。
    我使用的是Delphi2010。
      

  2.   

    终于调试成功了。错误在于自己对Windows API的理解不行。正确的方法是调用RegisterServiceCtrlHandlerEx注册一个HandlerEx回调函数,同时获得SERVICE_STATUS_HANDLE,在这里添加对LOGON和LOGOFF的处理。
    在服务成功启动后(SERVICE_RUNNING状态),设置SetServiceStatus(SERVICE_STATUS_HANDLE, TServiceStatus)。其中TServiceStatus可根据自己的需要,添加状态字。
    执行步骤:
    1、RegisterServiceCtrlHandlerEx
    2、启动服务
    3、SetServiceStatus
    参考地址:
    http://technet.microsoft.com/en-us/library/cc721961%28WS.10%29.aspx  获取LOGON通知的方法
    http://msdn.microsoft.com/en-us/library/ms685058.aspx  注册函数说明
    http://msdn.microsoft.com/zh-cn/library/ms683241.aspx  回调函数说明
    http://msdn.microsoft.com/en-us/library/ms686241.aspx  SetServiceStatus 函数
    http://msdn.microsoft.com/en-us/library/ms685996.aspx  服务状态定义
    http://msdn.microsoft.com/en-us/library/ms687414.aspx  一个例子
    以上在winxp下测试成功。
      

  3.   

    楼主的方法在win7能通过么? ????
      

  4.   

    自己进来也再看这个,也收不到logon,楼主能否给个小示例?[email protected]
      

  5.   

    自己解决了,switch判断条件错了