| devmstr |
Дата 18.4.2005, 09:46 (ссылка)
  |   (нет голосов)
Загрузка ...
|
|
|

Developer
 
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: нет Всего: 11
|
Что я делаю не так? | Код | #include <windows.h>
#define SERVICE_NAME "PowerService"
SERVICE_STATUS ServiceStatus; SERVICE_STATUS_HANDLE ServiceStatusHandle;
VOID WINAPI ServiceMain (DWORD argc, LPTSTR *argv); VOID WINAPI ServiceCtrlHandler (DWORD code);
VOID ServiceInitialization();
int WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow) { SERVICE_TABLE_ENTRY DispatchTable[]= { { SERVICE_NAME, ServiceMain }, { NULL, NULL } };
if (!StartServiceCtrlDispatcher(DispatchTable)) { MessageBox(NULL,"Service's register dispatch error","Error",MB_OK|MB_ICONERROR); //Все время перехожу сюда!!! return 1; } }
VOID WINAPI ServiceMain (DWORD argc, LPTSTR *argv) { ServiceStatus.dwServiceType = SERVICE_WIN32; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE; ServiceStatus.dwWaitHint = 0; ServiceStatus.dwCheckPoint = SERVICE_START_PENDING;
ServiceStatusHandle = RegisterServiceCtrlHandler(SERVICE_NAME,ServiceCtrlHandler);
if (ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0) { MessageBox(NULL,"Service's register error","Error",MB_OK|MB_ICONERROR); return; }
ServiceInitialization();
ServiceStatus.dwCurrentState = SERVICE_RUNNING; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0;
MessageBox(NULL,"Ok","Ok",MB_OK|MB_ICONINFORMATION); }
VOID WINAPI ServiceCtrlHandler (DWORD code) { switch(code) { case SERVICE_CONTROL_PAUSE: // Do whatever it takes to pause here. ServiceStatus.dwCurrentState = SERVICE_PAUSED; break; case SERVICE_CONTROL_CONTINUE: // Do whatever it takes to continue here. ServiceStatus.dwCurrentState = SERVICE_RUNNING; break; case SERVICE_CONTROL_STOP: // Do whatever it takes to stop here. ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwCurrentState = SERVICE_STOPPED; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0;
if (!SetServiceStatus (ServiceStatusHandle, &ServiceStatus)) { MessageBox(NULL,"Service's set status error","Error",MB_OK|MB_ICONERROR); return; } } return;
}
VOID ServiceInitialization() {
}
|
[/code] Это сообщение отредактировал(а) magician - 18.4.2005, 09:49
--------------------
Think different ©Steve Jobs 
|
|
|
|