下面是我写的一个service程序框架,实现了如下功能:
2.service中消息处理的实现 【程序编程相关:Log4j简明手册(2/3)】
1.service监视窗口的创建. 【推荐阅读:Log4j简明手册(1/3)】
4.工作线程函数的使用. 【扩展信息:Log4j简明手册(3/3)】
3.c++ 类的使用.
****如果需要完成特定的工作,只需将线程函数具体化与实例化***.
(程序的注释是用日文写的,因我机器的os是日文的win 2000,vc也是日文的vc6.0不能支持中文,抱歉)
/* 日付 バージョン 名前 内容
20040706 1.00 secbug 新規作成 */
class myservicemodel {public: myservicemodel(); virtual ~myservicemodel();
private:
//変数 // サービス名 lpctstr servicename; //サービスの状態を保持する service_status servicestatus; // private サービスのハンドル service_status_handle servicestatushandle;
hwnd hcmain_seivice_data;
//---------------私----------- // event used to hold servicemain from completing handle terminateevent; // thread for the actual work handle threadhandle; // flags holding current state of service bool pauseservice ; bool runningservice ;
//メソッド
public: //メインメソッド: int main(int argc, tchar* argv[]); //サービスインストール: void installservice(); // サービスアンインストール: void uninstallservice(); //サービスメイン: void winapi servicemain(dword argc, tchar* argv[]); //サービスコントロールハンドラー: void winapi servicecontrolhandler(dword contorlcode ); //ウインドウプロシージャ: lresult callback wndproc(hwnd hdlg, uint msg, wparam wparam ,lparam lparam); //---------------私-----------
//ウインドウプロシージャ static lresult callback _wndproc( hwnd hdlg, uint msg, wparam wparam , lparam lparam ); //サービスコントロールハンドラー static void winapi _servicecontrolhandler(dword contorlcode ); //サービスメイン static void winapi _servicemain( dword argc, tchar * argv[] ); bool createsvcwindow(); //エラー 処理 void errorhandler(char *s, dword err); //サービス終了する void terminate(dword error); //ステータス報告する bool sendstatustoscm ( dword dwcurrentstate, dword dwwin32exitcode, dword dwservicespecificexitcode, dword dwcheckpoint, dword dwwaithint ); //サービス終了 void stopservice(); //初期化サービス bool initservice(); //レジメサービス void resumeservice(); //ポーズサービス void pauseservice(); // bool runservice(char *ssvcname);};//スレッド関数 dword winapi servicethread(lpdword param);
/* 日付 バージョン 名前 内容
20040706 1.00 secbug 新規作成 */
//変数宣言extern myservicemodel objapp;
//////////////////////////////////////////////////////////////////////// 構築/消滅//////////////////////////////////////////////////////////////////////
/* 機 能 構築 static 可視性 public メソッド名 myservicemodel 引 数 なし 戻り値 なし */myservicemodel::myservicemodel(){ // サービス名 servicename = "myservicename"; //サービスの状態を保持する servicestatushandle = null; }
/* 機 能 消滅 static 可視性 public メソッド名 ~myservicemodel 引 数 なし 戻り値 なし */myservicemodel::~myservicemodel(){ }
/*
... 下一页