WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发VC 用 C++ 创建简单的 Win32 服务程序 阅读

用 C++ 创建简单的 Win32 服务程序

 2006-07-20 11:41:12 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示: -v, 报告服务的名字和版本号; -i, 安装服务; -u, 卸载服务; 默认情况下,当系统启动该服务时没有命令行参数传递,用 C++ 创建简单的 Win32 服务程序(2),创建应用程序框架我一直都是创建基于 MFC 的应用程序,当我刚接触 Win32 服务程序时,并在你提供的消息表中查
  • -v, 报告服务的名字和版本号;
  • -i, 安装服务;
  • -u, 卸载服务;

默认情况下,当系统启动该服务时没有命令行参数传递。

创建应用程序框架

我一直都是创建基于 MFC 的应用程序。当我刚接触 Win32 服务程序时,我先是用 Visual C++ AppWizard 创建一个 SDI/MFC 程序。然后去掉其中的文档和视图类、图标以及其它一些无用的东西,只剩下框架。结果到最后什么都去掉了,包括主窗口(服务程序不能有这个东东),什么也没有留下,非常愚蠢。我不得不 又回过头到 AppWizard,并用单个的源文件创建控制台程序,此源文件包含main 入口函数,我将这个文件命名为 NTServApp.cpp。我用此 cpp 扩展而不是用 C,因为我只想用C++ 来写程序,而不是直接用 C。稍后我们会讨论该文件代码实现。

因为我想用 C++ 类来构建服务,所以我创建了 NTService.h 和 NTService.cpp 文件,用它们来实现 CNTService 基类。我还创建了 MyService.h 和 MyService.cpp 文件用于实现自己的服务类(CMyService),它派生于 CNTService。稍后我们会看到代码。

建立新工程时,我喜欢尽快看到运行结果,所以我决定服务程序要做的第一件事情是建立一个系统应用程序日志记录。借助这个日志记录机制,我能跟踪服务何时启动, 何时停止等等。我还可以记录服务中发生的任何出错信息。创建这个日志记录比我想象的要复杂得多。

建立日志记录

我想,既然日志文件是操作系统的一部分,那么肯定有应用程序编程接口(API)来支持建立日志记录。所以我开始搜索 MSDN CD,直到发现 ReportEvent 函数为止。如果你不熟悉这个函数,你可能会想,这个函数应该知道在哪个日志文件建立记录,以及你想要插入的文本信息。没错,这都是它要做的事情,但是为了简化出错信息的国际化,该函数有一个消息 ID 作为参数,并在你提供的消息表中查找消息。所以问题无非是你想将什么消息放入日志,以及如何将这些消息添加到你的应用程序中,下面我们一步一步来做:

上一页  1 2 3 4 5 6 7  下一页

Tags:创建 简单 Win

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接