比如我做了一个NT服务 a.exe ,按照一般的办法,都是要在cmd 下敲下代码:a.exe -install 然后再 a.exe -start ,服务才行安装和执行,能不能实现,我执行双击这个a.exe文件,他自己就能执行和安装的?
解决方案 »
- 求一SQL语句
- 急聘Delphi、Java开发工程师,工作地点重庆。
- 提一个关于数据库的问题(我的每一贴子都给了分)
- 在DBGRIDEH网格中我想在(数量)这个字段中输入 39+20 然后数量自动变为59 但是现有的DBGRIDEH会出错的,请问高手如何解决
- Windows的控制交点是如何判断的?
- 请高手帮忙,很急
- 一个不相关的问题:在开机状态下插上了光驱电源线,从此在我的电脑里再也找不到光驱了,咋办呢?
- 一个有趣的问题,图形高手,思想开拓者,请进!!300相送!!upz者有分!!参与有分!!解决高分!!谢谢!
- isapi的问题,高手帮看看
- table绑定dbgrid,对表中的某个字段排序,该如何实现啊
- 图片数据问题
- 数据库连接字符串含变量问题
服务的入口是 WinServiceMain()
而程序的入口是 main()
只要在main()中
SC_HANDLE schSCManager;
SC_HANDLE schService;
LPCTSTR lpszDisplayName;
LPCTSTR lpszBinaryPathName; schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_CREATE_SERVICE);
if (schSCManager == NULL)
printf("ERROR on OpenSCManager"); lpszDisplayName = TEXT(descriptiveName);
lpszBinaryPathName = path;
schService = CreateService(.......)... 既然-install已经能安装了 把判断传入参数的那个if去掉, 那服务不是就自动添加了么.if Installing or StartService then
begin
SvcMgr.Application.Initialize;
SocketService := TSocketService.CreateNew(SvcMgr.Application, 0);
SvcMgr.Application.CreateForm(TSocketForm, SocketForm);
SvcMgr.Application.Run;
end else
begin
Forms.Application.ShowMainForm := False;
Forms.Application.Initialize;
Forms.Application.CreateForm(TSocketForm, SocketForm);
SocketForm.Initialize(False);
Forms.Application.Run;
end;以上一段来自其他帖子,你可以把服务的安装代码写在后面的else代码当中(不能用SvcMgr当中自带的注册,否则会搜索命令行开关)。
SvcMgr.dpr位于Source\Win32\db目录