我直接调用API写服务,但遇上两个问题var
SvrEntry:array [0..1] of TServiceTableEntry;begin
SvrEntry[0].lpServiceName:=ServiceName;
SvrEntry[0].lpServiceProc:=TServiceMainFunction(@ServiceMain); SvrEntry[1].lpServiceName:=nil;
SvrEntry[1].lpServiceProc:=nil;
if not StartServiceCtrlDispatcher(SvrEntry[0]) then
writeln('Dispatch failed');
end;在上面调用StartServiceCtrlDispatcher的时候根本没执行SERVICEMAIN函数而是直接返回了,错误信息为"the service process could not connect to the service controller",这是什么原因?在卸载的时候是不是应该先DELETESERVICE然后再CLOSESERVICEHANDLE()?
但这时服务对象没有关闭怎么能卸载?如果先关闭再DELETESERVICE会出错,信息为"句柄无效"
请问这又是怎么回事?
SvrEntry:array [0..1] of TServiceTableEntry;begin
SvrEntry[0].lpServiceName:=ServiceName;
SvrEntry[0].lpServiceProc:=TServiceMainFunction(@ServiceMain); SvrEntry[1].lpServiceName:=nil;
SvrEntry[1].lpServiceProc:=nil;
if not StartServiceCtrlDispatcher(SvrEntry[0]) then
writeln('Dispatch failed');
end;在上面调用StartServiceCtrlDispatcher的时候根本没执行SERVICEMAIN函数而是直接返回了,错误信息为"the service process could not connect to the service controller",这是什么原因?在卸载的时候是不是应该先DELETESERVICE然后再CLOSESERVICEHANDLE()?
但这时服务对象没有关闭怎么能卸载?如果先关闭再DELETESERVICE会出错,信息为"句柄无效"
请问这又是怎么回事?
解决方案 »
- 我想做一个通过调制解调器拨号上网软件
- 常量与变量的连接
- 数据类型不匹配?
- dbgrideh 怎样设置才使其实现某列的自动统计功能
- 寻求BED设置
- 有哪位仁兄知道Delphi 5 entUpdate在哪里可以下载,谢谢。
- 怎样修改EHLIB控件的DBSUMLIST!!!!!!!
- 怎样更新Blob字段?在线!解决再加分!!
- 初级问题,我改了编译参数以后不能断点了,可是不知道怎么改回去?救命
- 如何打开已经被其他程序打开的文本文件。
- 在自定义过程中,使用了tquery,那么在interface uses中该添加dbtables,怎知要添加这个呢,有什么依据?
- 关于Tchart的用法,请大虾们帮忙!不胜感激!
serviceTable.lpServiceProc:=@ServiceMain; If NOT StartServiceCtrlDispatcher(serviceTable) Then
Begin
Writeln('In StartServiceCtrlDispatcher Error number is :',GetLastError);
End;Procedure ServiceMain;stdcall;
.......