【发布时间】:2012-05-24 22:55:03
【问题描述】:
一旦用户尝试停止服务,我会尝试显示一个消息框。
为此,我使用了WTSSendmessage API...一旦SERVICE_CONTROL_STOP 事件发生,我就调用了该函数..
我在上述步骤中是否正确?因为一旦用户尝试停止服务,我就没有收到消息框..
请指导我...
下面是我的代码 sn-p::
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;
【问题讨论】:
-
您确定“dwSession”变量设置正确吗?它的价值是什么?
-
dwsession 设置为“DWORD dwSession = WTSGetActiveConsoleSessionId();”
-
嗨,coretech,问题出在“dwsession”上。我用“WTS_CURRENT_SESSION”替换了“dwsession”。 “WTS_CURRENT_SESSION”定义为“#define WTS_CURRENT_SESSION ((DWORD)-1)”。但相同的代码在 Windows 7 中不起作用.. 任何想法???
标签: c winapi service windows-services window