一旦用户尝试停止服务,我就会尝试显示一个消息框。
为此,我使用了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;
答案 0 :(得分:1)
使用WTSGetActiveConsoleSessionId(),如我在之前的问题中向您展示的MSDN article中所述。那篇文章包含了你需要的所有代码。
我还强烈建议您为API调用添加错误检查。在没有这种帮助的情况下诊断错误比它需要的更难。