KYWin 2.0.1.0 (build 2009.08.25) KYWin 使用简单, 只要头文件中包含有: #include "KYWin.h" 就可以了。 KYWin 提供丰富的函数和类, 如: a. 注册表类 {TRegistry} b. 日志事件类 {TEventLogger} c. 服务相关类 {TKYWinSvc, TKYService, TKYSvcApp} d. avi 文件类 {TKYAviFile} e. wav 文件相关类 {TKYWaveHead, TKYWaveFile, TKYWaveStore} 特别是开发服务应用程序时会非常简单, 例子: #include "KYWin.h" // 启动 static bool DoStart(const TKYStringList& AParams, bool AIsSvc) { // ??? ... ... return true; } // 停止 static void DoStop(bool AIsSvc) { // ??? ... ... } // 控制台方式下执行 static void DoExecute(const TKYStringList& AParams) { // 显示 printf("..... OnExecute is running.\n"); // 等待结束 printf("Press Ctrl+C stop application.\n"); while (_getch() != 0x03); } // 用户自定义开关 static void DoUser(long ASwitch, int argc, char* argv[]) { printf("switch(%d) is run.\n", ASwitch, argv[1]); } // 主函数 int main(int argc, char* argv[]) { // 初始化 TKYSvcApp objApp("TestSvc", "Service demo", "Test TKYSvcApp demo"); // 设置启动/停止的回调函数 objApp.OnStart = DoStart; objApp.OnStop = DoStop; // 自定义应用控制时的回调函数 /* objApp.OnExecute = DoExecute; objApp.OnUser = DoUser; //*/ // 设置对象属性 /* objApp.SvcObj()->SetAllowPause(false); // 关闭暂停控制 objApp.SvcObj()->SetStartType(sstSvcDemand); // 手动启动 //*/ // 若有依赖服务则可以添加 /* objApp.SvcObj()->Dependencies()->Add("Service1"); // 普通服务 objApp.SvcObj()->Dependencies()->Add("Service2", (void*)true); // 组服务 //*/ // 自定义参数开关(注: 默认参数开关可以通过 /? 显示) /* objApp.ClearSwitchs(); objApp.AddSwitch(TKYSvcApp::asHelp, "/?", "显示帮助信息"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asHelp, "/help"); objApp.AddSwitch(TKYSvcApp::asConsole, "/console", "控制台方式运行");// 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asService, "/service", "服务方式运行"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asInstall, "-install"); objApp.AddSwitch(TKYSvcApp::asUninstall, "-remove"); objApp.AddSwitch(TKYSvcApp::asStart, "-start"); objApp.AddSwitch(TKYSvcApp::asStop, "-stop"); objApp.AddSwitch(15, "-u1", "my switch 1"); objApp.AddSwitch(18, "-u2", "my switch 2"); objApp.AddSwitch(20, "-u3"); //*/ // 运行 objApp.Run(argc, argv); // 返回 return 0; } static void DoExecute(const TKYStringList& AParams) { // 显示 printf("..... OnExecute is running.\n"); // 等待结束 printf("Press Ctrl+C stop application.\n"); while (_getch() != 0x03); } // 用户自定义开关 static void DoUser(long ASwitch, int argc, char* argv[]) { printf("switch(%d) is run.\n", ASwitch, argv[1]); } // 主函数 int main(int argc, char* argv[]) { // 初始化 TKYSvcApp objApp("TestSvc", "Service demo", "Test TKYSvcApp demo"); // 设置启动/停止的回调函数 objApp.OnStart = DoStart; objApp.OnStop = DoStop; // 自定义应用控制时的回调函数 /* objApp.OnExecute = DoExecute; objApp.OnUser = DoUser; //*/ // 设置对象属性 /* objApp.SvcObj()->SetAllowPause(false); // 关闭暂停控制 objApp.SvcObj()->SetStartType(sstSvcDemand); // 手动启动 //*/ // 若有依赖服务则可以添加 /* objApp.SvcObj()->Dependencies()->Add("Service1"); // 普通服务 objApp.SvcObj()->Dependencies()->Add("Service2", (void*)true); // 组服务 //*/ // 自定义参数开关(注: 默认参数开关可以通过 /? 显示) /* objApp.ClearSwitchs(); objApp.AddSwitch(TKYSvcApp::asHelp, "/?", "显示帮助信息"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asHelp, "/help"); objApp.AddSwitch(TKYSvcApp::asConsole, "/console", "控制台方式运行");// 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asService, "/service", "服务方式运行"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asInstall, "-install"); objApp.AddSwitch(TKYSvcApp::asUninstall, "-remove"); objApp.AddSwitch(TKYSvcApp::asStart, "-start"); objApp.AddSwitch(TKYSvcApp::asStop, "-stop"); objApp.AddSwitch(15, "-u1", "my switch 1"); objApp.AddSwitch(18, "-u2", "my switch 2"); objApp.AddSwitch(20, "-u3"); //*/ // 运行 objApp.Run(argc, argv); // 返回 return 0; }