Delphi获取系统服务描述信息
2015-11-26 20:46
543 查看
program Project1; {$APPTYPE CONSOLE} uses Windows, WinSvc; type SERVICE_DESCRIPTION = packed record lpDescription: PWChar; end; PSERVICE_DESCRIPTION = ^SERVICE_DESCRIPTION; function QueryServiceConfig2(hService: THandle; dwInfoLevel: DWORD; lpBuffer: Pointer; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): LongBool; stdcall; external 'advapi32.dll' name 'QueryServiceConfig2W'; //////////////////////////////////////////////////////////////////////////////// // Procedure : SysErrorMessage // Comment : Returns last error as formated string function SysErrorMessage(ErrorCode: Integer): string; var Len: Integer; Buffer: array[0..55]of Char; begin Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0, Buffer, SizeOf(Buffer), nil); while (Len > 0)and(Buffer[Len-1] in [#0..#32, '.']) do Dec(Len); SetString(Result, Buffer, Len); end; function GetServiceDesciption(Computer, Servicename: PWChar; var Description: WideString): Boolean; var sc: THandle; os: THandle; sd: Boolean; dwNeeded: DWORD; Buffer: Pointer; begin dwNeeded := 0; Buffer := nil; sc := OpenSCManagerW(Computer, nil, SC_MANAGER_CONNECT); if sc <> 0 then begin os := OpenServiceW(sc, Servicename, SERVICE_QUERY_CONFIG); if os <> 0 then begin sd := QueryServiceConfig2(os, 1, nil, 0, dwNeeded); if (not sd) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin try GetMem(Buffer, dwNeeded); result := QueryServiceConfig2(os, 1, Buffer, dwNeeded, dwNeeded); if result then begin Description := PSERVICE_DESCRIPTION(Buffer)^.lpDescription; end; finally FreeMem(Buffer, dwNeeded); end; end else result := False; end else result := False; end else result := False; end; var description : WideString; begin if not GetServiceDesciption('PC-201212071904', 'AdobeFlashPlayerUpdateSvc', description) then begin Writeln(SysErrorMessage(GetLastError)); Readln; end else MessageBoxW(0, PWideChar(description), 'Dienstbeschreibung', 0); end.
http://www.lsworks.net/article/97.html
相关文章推荐
- Delphi利用Webbrowser登陆QQ群文档
- Delphi在Webbrowser上绘制图像
- 内存共享【Delphi版】
- Delphi十进制和十六进制互转
- Delphi Help
- Delphi反汇编内部字符串处理函数不完全列表
- delphi 数据连接规范
- Delphi New,Getmem,ReallocMem联系与区别
- 去掉delphi XE8或者更高版本编辑器自带的begin end之间的线条
- RAD Studio, Delphi, C++Builder限时年终优惠活动
- Delphi中使用Office中VBA的优缺点
- Delphi中控制VBA 宏
- Delphi 与 Word_VBA
- Delphi中如何调用Excel VBA
- 201601 DELPHI_强制类型转换As
- Delphi 10 Seattle FireDAC 连接池配置过程
- Delphi 技巧改造HINT的输出方式
- delphi中需要熟悉的知识点
- Delphi 常用API 函数(好多都没见过)
- delphi7调用JAVA RESTFUL接口