windows 服务Word文档下载推荐.docx

上传人:b****8 文档编号:22281341 上传时间:2023-02-03 格式:DOCX 页数:16 大小:1.35MB
下载 相关 举报
windows 服务Word文档下载推荐.docx_第1页
第1页 / 共16页
windows 服务Word文档下载推荐.docx_第2页
第2页 / 共16页
windows 服务Word文档下载推荐.docx_第3页
第3页 / 共16页
windows 服务Word文档下载推荐.docx_第4页
第4页 / 共16页
windows 服务Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

windows 服务Word文档下载推荐.docx

《windows 服务Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《windows 服务Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

windows 服务Word文档下载推荐.docx

C:

\Windows\Microsoft.NET\Framework\v4.0.30319,

在该路径下可以发现如下截图所示的文件:

使用InstallUtil来完成服务的安装和卸载必须在命令行下完成:

假设我们现在已经采用C#完成了一个服务,服务名称为TestService.exe,

该服务所在的路径为D:

\Service\TestService.exe,

那么使用InstallUtil.exe来完成该服务的安装和卸载过程如下:

在命令行下运行下面三条命令即可:

1.定位到InstallUtil所在目录:

\Windows\Microsoft.NET\Framework\v4.0.30319

2.执行TestService.exe服务的安装:

InstallUtilD:

\Service\TestService.exe

3.执行TestService.exe服务的卸载:

InstallUtil/uD:

\Service\TestService.exe

服务启动和停止

服务的启动和停止则可以在服务控制台管理器中实现,

打开服务控制台管理器的简单方式:

运行services.msc命令即可。

服务中定时器的使用:

1:

///<

summary>

2:

///定义定时器

3:

/summary>

4:

privateSystem.Timers.TimermyTimer;

///服务启动时触发的事件

paramname="

args"

>

<

/param>

5:

protectedoverridevoidOnStart(string[]args)

6:

{

7:

Debug.WriteLine("

MyServiceIsStarted!

"

);

8:

 

9:

myTimer=newSystem.Timers.Timer(3000);

10:

11:

myTimer.Elapsed+=Timer_Tick;

12:

myTimer.Interval=3000;

13:

myTimer.Enabled=true;

14:

}

///定时器回调处理例程

source"

e"

privatevoidTimer_Tick(objectsource,System.Timers.ElapsedEventArgse)

InTimer_Tick!

//停掉定时器

myTimer.Enabled=false;

OutTimer_Tick!

服务调试:

服务的调试是比较变态的,方法貌似也还是有几种,

不过我呢,反正也就知道下面一种而已,个人觉得这种方式也还用得下去,即调试起来感觉还不错的!

1.首先在你的服务源代码中添加一个定时器,定时器的示例代码如上所示。

2.在服务的Start事件中启动定时器,并且将定时器设置为可用状态。

3.在服务中添加如下代码:

(我的定时器为3秒钟,所以15秒后就会执行Debug.WriteLine了)

privateInt32nCount=0;

nCount++;

if(nCount==5)

3.编译和安装好服务。

4.下断点。

5.在服务控制台管理器中启动服务。

6.以下操作必须在15秒内完成,否则无法进入调试状态(因为Debug.WriteLine已经执行完了)。

7.VS2010中“工具–>

附加到进程”。

8.选择好服务所在的进程(我这里的服务进程为WorkTracker.Service.exe),然后单击附加后就慢慢等待15秒钟的过去吧。

9.15秒到达时,我们的服务就会进入到调试状态了,然后再VS中就可以来调试服务了。

VC++/MFC部分:

设置窗口透明度:

在对话框的OnInitDialog处理例程中添加以下代码即可:

//设置窗体透明度,120是透明度,范围是0~255

:

:

SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);

SetLayeredWindowAttributes(m_hWnd,0,215,LWA_ALPHA);

设置窗口背景颜色:

1.首先给对话框类(我这里是CAboutDialog类)中添加以下私有成员变量:

private:

CBrushm_brush;

2.然后在CAboutDialog类的构造函数中初始化m_brush成员变量:

CAboutDialog:

CAboutDialog(CWnd*pParent/*=NULL*/)

:

CDialogEx(CAboutDialog:

IDD,pParent)

{

this->

m_brush.CreateSolidBrush(RGB(200,245,142));

}

3.再在CAboutDialog的OnCtlColor处理例程中修改为:

HBRUSHCAboutDialog:

OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)

HBRUSHhbr=CDialogEx:

OnCtlColor(pDC,pWnd,nCtlColor);

//只有当是对话框窗体时,才将画刷设置为m_brush

//对于一些其他的控件之类的则不操作,即使用预定义背景色

if(nCtlColor==CTLCOLOR_DLG)

{

returnthis->

m_brush;

}

//TODO:

如果默认的不是所需画笔,则返回另一个画笔

returnhbr;

MFC中使用PNG图片:

//从资源文件中读取出PNG格式的图片,并且将该图片转换为Bitmap,然后显示在指定ID的控件上

voidCAboutDialog:

SetResourceImageToCtrl(LPCTSTRlpszImgType,intnCtrlCode,intnImgResourceID)

CImagecImg;

HRSRChRsrc=FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(nImgResourceID),lpszImgType);

if(NULL!

=hRsrc)

HGLOBALhImgData=LoadResource(AfxGetResourceHandle(),hRsrc);

if(NULL!

=hImgData)

{

LPSTREAMlpStream=NULL;

LPVOIDlpVoid=LockResource(hImgData);

DWORDdwSize=SizeofResource(AfxGetResourceHandle(),hRsrc);

15:

HGLOBALhAllocate=GlobalAlloc(GHND,dwSize);

16:

LPBYTElpByte=(LPBYTE)GlobalLock(hAllocate);

17:

memcpy(lpByte,lpVoid,dwSize);

18:

GlobalUnlock(hAllocate);

19:

20:

HRESULThResult=CreateStreamOnHGlobal(hAllocate,TRUE,&

lpStream);

21:

if(S_OK==hResult)

22:

{

23:

cImg.Load(lpStream);

25:

HBITMAPhBitmap=cImg.Detach();

27:

((CButton*)GetDlgItem(nCtrlCode))->

SetBitmap(hBitmap);

28:

}

30:

GlobalFree(hAllocate);

31:

FreeResource(hImgData);

32:

}

33:

34:

该函数的调用代码为:

SetResourceImageToCtrl(TEXT("

PNG"

),IDC_LOG_BTN,IDB_PNG1);

设置窗口图标:

BOOLCInstallSvcDlg:

OnInitDialog()

CDialogEx:

OnInitDialog();

//设置窗体上的窗口图标为IDI_ICON1

HICONhIcon=AfxGetApp()->

LoadIcon(IDI_ICON1);

SetIcon(hIcon,FALSE);

//设置小图标

SetIcon(hIcon,TRUE);

//设置大图标

//设置窗体透明度,120是透明度,范围是0~255

InitControl();

returnTRUE;

//除非将焦点设置到控件,否则返回TRUE

设置EXE图标:

这个可以很轻松的实现,就需要进入Resource.h中修改就可以了,

比如在我的项目中,有一个资源IDI_ICON1,我需要将该资源设置为我的EXE的图标,

方法是打开Resource.h,并且对其中的IDI_ICON1的值进行修改,使得该值小于IDR_MAINFRAME的值,

然后编译好程序后就可以看到图标已经改变了(这里有一个Bug,

有时候你重新生成后,你在Release下会看到你的EXE的图标还是默认的MFC图标,

你可以尝试着将这个EXE拷贝到桌面上,你会发现拷贝过去以后EXE图标就变成你自己所定义的图标了)。

而Debug下看到的是你所设置的图标是正确的。

设置EXE文件属性:

所谓的文件属性就是如下面得东西:

上面的信息的修改可以直接在资源文件中修改,

在打开的文件中直接修改代码即可,示例如下:

附加我的InstallSvc:

该工具可以用来实现普通服务的安装,也可以实现NT式驱动程序的安装,

有了这个工具的话,在开发服务程序的时候就不需要再使用前面的那些招数了,太麻烦了,

而且也方便了以后内核代码的安装,运行之类的,也算是有点小作用吧。

关于这个工具的实现呢,其实我以前就发过一篇博文的,那篇博文是将SCM封装进了C#类,

所以完全可以使用哪个类来开发一个C#版本的InstallSvc,

这篇博文的链接为:

有兴趣的可以去看看,哪个类自己觉得写得还不错の,

我的工具的截图为:

该工具在XP以及低版本操作系统下,显示得不怎么滴,

在关于对话框中的图片显示很有问题的,估计是Bitmap不支持透明或者在PNG转换为Bitmap时出问题了吧!

下载InstallSvc.zip

版权所有,欢迎转载,但转载请注明:

转载自Zachary.XiaoZhen-梦想的天空

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1