Windows 程式設計之服務 2

2021-06-17 21:09:01 字數 2371 閱讀 5197

除了系統定義的五種控制碼外(還有一種是: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...