我想在我的应用程序中添加一个按钮(服务的前端),它将为我的服务打开服务属性对话框(如服务mmc snapin)。
打开文件属性有很多例子,但这不是我想要的。我不知道从哪里开始。
答案 0 :(得分:5)
根据services.msc
,该网页来自filemgmt.dll
,称为ServicePageGeneral
。注册COM组件时,我找不到任何有关CLSID的文档,也找不到filemgmt.dll
中任何其他字符串的文档。
这并不排除存在已建立的API或显示对话框的命令行选项的可能性,但我当然找不到。
进一步证实对话框不可重用的情况,Process Explorer和SQL Server配置管理器都重新实现了对话框,而不是显示services.msc
版本。
相关:How do I open properties box for individual services from command line or link?
答案 1 :(得分:1)
您应该开发自定义“服务控制台”,使用.NET和WMI类可以查询计算机中的服务列表,获取实际状态,您应该从应用程序执行Windows命令以启动,停止服务。< / p>
答案 2 :(得分:0)
今天我发现这是可能的!
这是Delphi上的代码,该代码使用MMC 2.0 Automation Object Model
var
objMMC: OleVariant;
procedure ShowSvcProperties(const ASvcName: string);
var
objView, objList, objItem: OleVariant;
SvcEnum: IEnumVariant;
Value: UInt32;
sName: string;
begin
objMMC := CreateOleObject('MMC20.Application');
objMMC.Load('services.msc');
objView := objMMC.Document.ActiveView;
objList := objView.ListItems;
SvcEnum := IUnknown(objList._NewEnum) as IEnumVariant;
while SvcEnum.Next(1, objItem, Value) = S_OK do
try
sName := objItem.Name;
if SameText(sName, ASvcName) then begin
objView.Select(objItem);
objView.DisplaySelectionPropertySheet;
Break;
end;
finally
VariantClear(objItem);
end;
end;
现在要显示服务属性对话框,只需调用ShowSvcProperties('Plug and Play');