如何判断Apache已经启动?
解决方案 »
- 请问有没有简单的办法判断一个字符串或数值是否包含在一个数组中?
- 请教TreeView里节点拖动的问题---急急急!!!
- ADO
- 关于多表查询结果的修改!
- 程序中的两个uses有什么区别的亚?
- ado的gettablename()中参数?在线等待,立即结帐!
- 这两个函数 SetForeGroundWindow, GetForeGroundWindow ;具体怎么用
- 高手!帮帮忙!!!不通过OLE如何将报表导为EXCEL 或自己定义的格式????
- @请问测试字符串s1包含字符串s2的Delphi语句怎么写?急!
- $@WWW:真是气死人的问题!
- ★如何将光标定位到RichEdit的尾部,同时让滚动条也在最下处??(详见文)
- 在TREEVIEW中,怎么样表示节点的级别(LEVEL)?
xixi,我倒写过一个(原来是有关闭、启动服务部分的,后来不小心给删除了),所以现在
只有取服务状态部分了
首先
uses winsvc;//关于service的函数定义在这个unit中,d5自带的啦
要控制一个service的具体流程大概是这样的:
1、取得服务数据库的handle
2、根据服务数据库的handle取得服务的handle
3、根据服务的handle来取服务的状态或者控制服务
下面是一段取Sql server状态的程序
function tserviceform.GetSqlServerStatus: Boolean;
var
SrvHandle: SC_HANDLE;//这些都在winsvc单元中定义的
Service_Status: _SERVICE_STATUS;//在winsvc单元中有定义
SrvStatus: Integer;
begin
//取sql server的状态,如果sql server正在运行则返回true ,否则返回 false
SrvHandle := OpenSCManager('', SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
SrvHandle := OpenService(SrvHandle, PChar('MSSQLServer'), SERVICE_QUERY_STATUS or SERVICE_START);
case SrvHandle of
ERROR_ACCESS_DENIED: Memo.Lines.Add('The specified service control manager database handle does not have access to the service.');
ERROR_INVALID_HANDLE: Memo.Lines.Add('The specified handle is invalid.');
ERROR_INVALID_NAME: Memo.Lines.Add('The specified service name is invalid.');
ERROR_SERVICE_DOES_NOT_EXIST: Memo.Lines.Add('The specified service does not exist.');
end;
if QueryServiceStatus(SrvHandle, Service_Status) then
begin
//判断Sql Server服务的状态
SrvStatus := Service_Status.dwCurrentState;
case SrvStatus of
SERVICE_STOPPED: Memo.Lines.Add('The service is not running.');
SERVICE_START_PENDING: Memo.Lines.Add('The service is starting.');
SERVICE_STOP_PENDING: Memo.Lines.Add('The service is stopping.');
SERVICE_RUNNING: memo.lines.add('The service is running.');
SERVICE_CONTINUE_PENDING: Memo.Lines.Add('The service continue is pending.');
SERVICE_PAUSE_PENDING: Memo.Lines.Add('The service pause is pending.');
SERVICE_PAUSED: Memo.Lines.Add('The service is paused');
end;
Result := (SrvStatus = SERVICE_RUNNING);
end
else
Result := False;
end;
具体的service函数可以看msdn中的Service Functions部分。