我可以以编程方式启动 "services.msc" 并让用户专注于确切的服务吗?
Can I start "services.msc" programmatically and focus user on exact service?
我想以编程方式启动 "services.msc" 并按名称启动 select 服务。我可以显示 window 但在这种情况下没有服务 selected:
var proc = new Process();
proc.StartInfo.FileName = "services.msc";
//proc.StartInfo.Arguments = "MyServiceName";
proc.Start();
我可以为 select 服务指定参数吗?
我一直遇到这个问题(然后是一些),但我不相信如果不推出自定义解决方案就无法解决这个问题(相关:how to open a service properties dialog)。
我最终使用了 AutoIt (https://www.autoitscript.com/site/autoit/downloads/)。我首先使用 AutoIt Window Info 来获取控件的详细信息。然后我添加了对 AutoItX3.Assembly.dll
的引用并添加了以下代码:
AutoItX.Run(string.Format("{0} \"{1}\"", fileName, args), AppDomain.CurrentDomain.BaseDirectory);
AutoItX.WinWaitActive("Services");
int result = AutoItX.ControlFocus("Services", "Services (Local)", "[CLASS:MMCOCXViewWindow; INSTANCE:1]");
if (result == 1)
{
AutoItX.ControlSend("Services", "Services (Local)", "[CLASS:SysHeader32; INSTANCE:1]", "{TAB}");
AutoItX.Send("MyService");
}
因为我不想注册 dll(以便我可以分发文件)我添加了 AutoItX3.Assembly.dll、AutoItX3.Assembly.xml、AutoItX3.dll 和 AutoItX3_64.dll 我的解决方案。
它工作得很好。在我的例子中,我还想弹出属性,所以我在之后添加了一个额外的 {ENTER}。
我想以编程方式启动 "services.msc" 并按名称启动 select 服务。我可以显示 window 但在这种情况下没有服务 selected:
var proc = new Process();
proc.StartInfo.FileName = "services.msc";
//proc.StartInfo.Arguments = "MyServiceName";
proc.Start();
我可以为 select 服务指定参数吗?
我一直遇到这个问题(然后是一些),但我不相信如果不推出自定义解决方案就无法解决这个问题(相关:how to open a service properties dialog)。
我最终使用了 AutoIt (https://www.autoitscript.com/site/autoit/downloads/)。我首先使用 AutoIt Window Info 来获取控件的详细信息。然后我添加了对 AutoItX3.Assembly.dll
的引用并添加了以下代码:
AutoItX.Run(string.Format("{0} \"{1}\"", fileName, args), AppDomain.CurrentDomain.BaseDirectory);
AutoItX.WinWaitActive("Services");
int result = AutoItX.ControlFocus("Services", "Services (Local)", "[CLASS:MMCOCXViewWindow; INSTANCE:1]");
if (result == 1)
{
AutoItX.ControlSend("Services", "Services (Local)", "[CLASS:SysHeader32; INSTANCE:1]", "{TAB}");
AutoItX.Send("MyService");
}
因为我不想注册 dll(以便我可以分发文件)我添加了 AutoItX3.Assembly.dll、AutoItX3.Assembly.xml、AutoItX3.dll 和 AutoItX3_64.dll 我的解决方案。
它工作得很好。在我的例子中,我还想弹出属性,所以我在之后添加了一个额外的 {ENTER}。