没有合适的资源?快使用搜索试试~ 我知道了~
首页Windows服务编写(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
Windows服务编写(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
251 浏览量
更新于2023-05-27
评论
收藏 192KB PDF 举报
主要介绍了Windows服务编写Windows Service,system权限程序显示界面与用户交互(xp,win7通用) ,需要的朋友可以参考下
资源详情
资源评论
资源推荐

Windows服务编写(服务编写(Windows Service,,system权限)程序权限)程序
显示界面与用户交互(显示界面与用户交互(xp,,win7通用)通用)
主要介绍了Windows服务编写Windows Service,system权限程序显示界面与用户交互(xp,win7通用) ,需要
的朋友可以参考下
1、、VC2008中编写中编写“Windows服务服务”((Windows Service)程序)程序
源码资源下载:/201604/yuanma/TestService_jb51.rar
vc2008下新建一个 ATL 项目-》 选择创建一个“服务”类型的ATL 项目TestService,将生成如下代码,
class CTestServiceModule : public CAtlServiceModuleT< CTestServiceModule, IDS_SERVICENAME >
{
public :
DECLARE_LIBID(LIBID_TestServiceLib )
DECLARE_REGISTRY_APPID_RESOURCEID (IDR_TESTSERVICE, "{1FF78006-B225-4CC0-A7DE-E0C9D31C9937}" )
HRESULT InitializeSecurity () throw()
{
// TODO : 调用CoInitializeSecurity 并为服务提供适当的
// 安全设置
// 建议- PKT 级别的身份验证、
// RPC_C_IMP_LEVEL_IDENTIFY 的模拟级别
// 以及适当的非NULL 安全说明符。
return S_OK ;
}
//重写这个函数来启动任务啦
HRESULT Run (int nShowCmd = SW_HIDE ) throw()
{
HRESULT hr = S_OK;
hr = __super ::PreMessageLoop( nShowCmd);
if (hr == S_OK)
{
if (m_bService )
{
//需要定义#define _ATL_NO_COM_SUPPORT才能启动服务时走到这里
//可以在这里启动线程,或者什么其他东西来做自己的工作的啦
//这里是什么都没有做了,只输出一条信息
LogEvent(_T ("widebright 的服务启动咯,呵呵 "));
SetServiceStatus(SERVICE_RUNNING );
}
//进入消息循环,不停的处理消息,可能最后分发到 Handler去处理,调用了OnShutdown等函数的。
__super::RunMessageLoop ();
}
if (SUCCEEDED (hr))
{
hr = __super ::PostMessageLoop();
}
//可以在适当的时候调用Uninstall函数来卸载掉服务
//__super::Uninstall();
return hr ;
}
//重写,服务退出处理
void OnShutdown () throw()
{
LogEvent(_T ("TestService 的服务退出咯,一点都不好玩呵呵 "));
}
};
CTestServiceModule _AtlModule;
//
extern "C" int WINAPI _tWinMain (HINSTANCE , HINSTANCE ,
LPTSTR , int nShowCmd)
{
return _AtlModule .WinMain( nShowCmd);
}
2、我只要根据需要重写相应的函数来实现自己想要的功能就行了、我只要根据需要重写相应的函数来实现自己想要的功能就行了
比如你想创建的“服务”随系统启动,可以重写CAtlServiceModuleT 的Install函数,把里面的CreateService函数的参数修改一
下,例如添加与用户交互可以使用 SERVICE_INTERACTIVE_PROCESS,具体可以去MSDN上查找CreateService这个API
的说明。
如果想处理服务 停止和启动的动作,可以参考CAtlServiceModuleT 的源代码重写OnStop ()等函数。我上面简单到重写了
Run函数,输出一条“事件”其实具体 工作是可以放到这里来完成的吧。



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0