delphi 高手进,系统服务编程

来源:百度知道 编辑:UC知道 时间:2024/06/24 19:04:21
我想把自己编写的程序注册为系统服务程序,我这里有段代码,但是创建服务后不能正常启动,急死我了,谁能解释下为什么,程序路径什么的都对,就是不能正常启动,提示什么超时。

源码:谁能帮我修改成开机自动启动,这是手动启动
function InstallService:Boolean;
var
schSCManager,schService:THANDLE;
strDir:array[0..1023]of char;
lpszBinaryPathName:PChar;
begin
schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if schSCManager=0 then
begin
MessageBox(0,’联接服务控制管理器失败’,’Error’,MB_OK);
Result:=false;
exit;
end;
GetCurrentDirectory(1024,strDir); // 取到应用程序所在的目录
strlcat(strDir,’\ScvProject.exe’,1024); // 当前目录下的服务应用
lpszBinaryPathName:=strDir;
schService:=CreateService(
schSCManager, // 服务控制管理句柄
’MyService’, // 服务名称 需要和 服务应用名 相同
’My Service Display Name’, // 显示的服务名称
SERVICE_ALL_ACCESS, // 存取权利
SERVICE_WIN32_OWN_PROCESS, // 服务类型
SERVICE_DEMAND_START, // 启动类型
SERVICE_ERROR_NORMAL, // 错误控制类型
lpszBinaryPathName, // 服务程序
nil, // 组服务名称
nil,

你搞错了。创建服务程序用向导完成就可以了.请用以下方法创建工程

用Delphi创建服务程序关键词:系统服务程序
Windows 2000/XP和2003等支持一种叫做"服务程序"的东西.程序作为服务启动有以下几个好处:

(1)不用登陆进系统即可运行.
(2)具有SYSTEM特权.所以你在进程管理器里面是无法结束它的.

下面就介绍一下如何用Delphi7创建一个Service程序.
运行Delphi7,选择菜单File-->New-->Other--->Service Application.将生成一个服务程序的框架.将工程保存为ServiceDemo.dpr和Unit_Main.pas,然后回到主框架.我们注意到,Service有几个属性.其中以下几个是我们比较常用的:

(1)DisplayName:服务的显示名称
(2)Name:服务名称.

然后在事件中写入相关代码。

最后用命令参数 /install 来安装。