除了系統定義的五種控制碼外(還有一種是:service_control_shutdown),
使用者還可自定義控制碼,其取值範圍是128-255。使用者可以通過控制面板中的服務
項向特定服務程式的控制處理函式傳送控制碼,程式設計師可以呼叫系統函式
controlservice 直接向服務程式的控制處理函式傳送控制碼。其函式原型如下:
bool controlservice(
sc_handle hservice,
dword dwcontrol,
lpservice_status lpservicestatus
);hservice :函式 openservice or createservice 返回的服務程式控制程式碼。
dwcontrol :控制碼,不能是service_control_shutdown。
lpservicestatus:返回最後收到的服務狀態資訊。
1. 定義控制碼,
其取值範圍是128-255
eg:#define
play_music_start
0x00000086
#define
play_music_stop
0x00000087
2. 在服務控制處理函式中新增處理分支
void
winapi
servicehandler(
dword
opcode)
writetolog(
"stop success !");
return;
case
service_control_shutdown:
servicestatus.dwcurrentstate =
service_control_shutdown;
if(!setservicestatus(servicestatushandle,&servicestatus))
writetolog(
"shutdown success !");
return;
case
play_music_start:
playmusic(
true);
break;
case
play_music_stop:
playmusic(
false);
break;
default:
writetolog(
"bad service request");
} return;
} dword
winapi
playmusic(
lpvoid
lpparameter)
return
getlasterror(); }
bool
playmusic(
bool
isplay)
else
} else
} 3.
在需要的地方通過
controlservice
向scm傳送控制碼
void
cservice_testdlg
::onbnclickedstart()
else
bret =
false;
closeservicehandle( hservice ); }
else
bret =
false;
closeservicehandle( hscm ); }
else
bret =
false;
if(bret)
messagebox
(l"ok");
else
messagebox
(l"start error");
}
void
cservice_testdlg
::onbnclickedstop()
else
bret =
false;
closeservicehandle( hservice ); }
else
bret =
false;
closeservicehandle( hscm ); }
else
bret =
false;
if(bret)
messagebox
(l"stop ok");
else
messagebox
(l"stop error");
}
windows程式設計之socket套接字2
網路授時服務,同步本機時間,主要 include stdafx.h include include include include resource.h include maindlg.h define hightime 21968699 21968708 jan 1,1900 filetime.h...
Windows程式設計之時間
查msdn可以看到,windows中的時間分為以下幾類 format type description system systemtime year,month,day,hour,second,and millisecond,taken from the internal hardware cloc...
windows程式設計之檔案對映
當我們對檔案進行讀寫操作的時候,我們經常會呼叫readfile和writefile這兩個api,但是如果我們的檔案較大,幾百兆甚至幾g且需要時常修改值b的時候,這時那兩個函式可能就不大好了,這時微軟提供了另外一種方法 檔案對映,來使我們進行檔案操作。handle hfile,檔案控制代碼 lpsec...