我可以启动“服务”吗?以编程的方式,将用户集中在精确的服务上

本文关键字:服务 集中 用户 方式 启动 我可以 编程 | 更新日期: 2023-09-27 18:03:50

我要启动"services "。Msc",并按名称选择服务。我可以显示窗口,但在这种情况下没有选择服务:

var proc = new Process();
proc.StartInfo.FileName = "services.msc";
//proc.StartInfo.Arguments = "MyServiceName";
proc.Start();

是否有我可以指定的参数来选择服务?

我可以启动“服务”吗?以编程的方式,将用户集中在精确的服务上

我一直有这个问题(然后是一些),但不相信如果不推出自定义解决方案(相关:如何打开服务属性对话框)就不能做到这一点。

我最终使用了AutoIt (https://www.autoitscript.com/site/autoit/downloads/)。我首先使用AutoIt窗口信息来获取控件的详细信息。然后我添加了对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}。