停止服务之前的WTSSendmessage

时间:2012-05-17 11:01:14

标签: c winapi service windows-services window

一旦用户尝试停止服务,我就会尝试显示一个消息框。

为此,我使用了WTSSendmessage API ...我在SERVICE_CONTROL_STOP事件发生后调用了该函数。

我在上面的步骤中是对的吗?因为一旦用户试图停止服务,我就不会收到消息框。

请指导我......

以下是我的代码段::

case SERVICE_CONTROL_STOP:
    WTSSendMessage = (fptr1)GetProcAddress(hinstLib, "WTSSendMessage");
    BOOL ret = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, dwSession, lpszTitle, 12 ,lpszText, 7 ,MB_YESNO|MB_ICONINFORMATION, 0, &res, TRUE);

    ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
    SetServiceStatus( serviceStatusHandle, &serviceStatus );
    SetEvent( stopServiceEvent );
    return;

1 个答案:

答案 0 :(得分:1)

使用WTSGetActiveConsoleSessionId(),如我在之前的问题中向您展示的MSDN article中所述。那篇文章包含了你需要的所有代码。

我还强烈建议您为API调用添加错误检查。在没有这种帮助的情况下诊断错误比它需要的更难。