运行在后台的程序用了do while(1) 循环后,当关机或者重启的时候,老是提示“是否要立即结束”的提示消息框!你们是否有什么好方法解决这类问题呢?让程序能正常退出。
我可以是否在 do while(1)这个循环结构体中加入 判断 WM_ENDSESSION 或者 WM_QUEARYENDSESSION 的消息判断吗?如果有这个消息,然后就发送 SendMessage(WM_COLSE0) 来关闭程序!
这样的方法是否行得通?
我可以是否在 do while(1)这个循环结构体中加入 判断 WM_ENDSESSION 或者 WM_QUEARYENDSESSION 的消息判断吗?如果有这个消息,然后就发送 SendMessage(WM_COLSE0) 来关闭程序!
这样的方法是否行得通?
{}WM_QUEARYENDSESSION 的消息判断
g_bEnd = FALSE
{
/*--------------------------------------------------*/
MSG msg;
BOOL bRet;
if ( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0 )
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
/*--------------------------------------------------*/
if ( !g_isRunning )
{
break;
}
Sleep(100);
} ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);// 在服务停止时VOID WINAPI ServiceCtrlHandler(DWORD dwControl)
{
switch(dwControl)
{
case SERVICE_CONTROL_STOP:
g_isRunning = false;
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus( ServiceStatusHandle, &ServiceStatus);
break;
....
default:
break;
}
#pragma comment(linker,"/subsystem:console")
#pragma comment(linker,"/align:4096")
#pragma comment(linker,"/merge:.text=.rdata")#include <windows.h>void WinEntry()
{
MessageBox(NULL,"","",MB_OK);
}1024字节