delphi 高手进,系统服务编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 高手进,系统服务编程相关的知识,希望对你有一定的参考价值。

我想把自己编写的程序注册为系统服务程序,我这里有段代码,但是创建服务后不能正常启动,急死我了,谁能解释下为什么,程序路径什么的都对,就是不能正常启动,提示什么超时。

源码:谁能帮我修改成开机自动启动,这是手动启动
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, // 组标识
nil, // 依赖的服务
nil, // 启动服务帐号
nil); // 启动服务口令
if schService = 0 then
begin
MessageBox(0,’无法建立指定的服务对象’,’Error’,MB_OK);
Result:=false;
exit;
end;
CloseServiceHandle(schService);
MessageBox(0,’已经成功地安装了服务对象’,’信息’,MB_OK);
Result:=true;
end;
悲哀,我说的不是使用delphi自带的那个东西写服务,而是自己用代码写。懂?

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

用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 来安装。

用Autoit编程软件,如何读取屏幕上的信息?Autoit高手进!

急需各位Autoit高手帮忙,
本人想学一个类似批处理文件,但比它更强悍的编程语言
于是就看上了Autoit,这个软件的控制功能真牛叉,调用鼠标和键盘的函数非常实用
但是,我对它的读取功能表示怀疑。难道Autoit只能读取文件内容么?
因为用Autoit写程序有时会遇到多种情况,就需要读取屏幕上的内容分情况处理(例如读取被打开网页中的文字)
有什么函数能用来做这个的么?
实在不行,但是读取网页信息就行了,
还是不行的话,谁帮忙给个当前网页的内存地址也行...

应该说Autoit提供的功能还是很强大的,并不单纯是简单的鼠标和键盘函数,Autoit有一个可以称之为庞大的函数库,这个函数库除了软件自带的函数库之外,还有由Autoit爱好者不断更新的用户自定义函数库。
例如,读取网页文字,就可以通过用户函数库中的IE函数库包来进行处理。如:
_IEDocReadHTML:返回整个文档的HTML源代码.
_IEBodyReadText:返回网页中标记中的文本.
_IEImgClick:模拟鼠标点击网页上某一个图像,可以通过文本、名称进行定位匹配.
等等。
参考技术A 打开帮助,User Defined Function 中的Ie Management里的函数可以与IE内核浏览器交互。
比如,你不要关闭这个页面,运行下面的代码看看:

#include <IE.au3>
$oIE = _IEAttach ("用Autoit编程软件,如何读取屏幕上的信息?")
$sText = _IEBodyReadText ($oIE)
MsgBox(0, _IEPropertyGet ($oIE, "locationurl"), $sText)

以上是关于delphi 高手进,系统服务编程的主要内容,如果未能解决你的问题,请参考以下文章

服务程序增加系统托盘

VB编程高手进

Delphi高手进!!!Delphi新建一个工程 然后在form上就添加一个advstringgrid控件 为啥就出错了呢?

delphi怎样编写服务程序

用Delphi创建windows服务程序

linux环境c语言编程!问题棘手!高手进!