gpt4 book ai didi

c# - 选择 'performance' 选项卡调用 Windows 任务管理器

转载 作者:太空狗 更新时间:2023-10-29 20:14:35 26 4
gpt4 key购买 nike

我目前正在使用 WPF 中的单击事件调用 Windows 任务管理器。该事件只是执行 'Process.Start("taskmgr")。

我的问题是,有没有办法选择在进程启动/显示时选择任务管理器中的哪个选项卡?我希望在引发点击事件时自动选择“性能”选项卡。

感谢您的帮助。

最佳答案

为了扩展 Philipp Schmid 的帖子,我制作了一个小演示:

将其作为控制台应用程序运行。您需要添加对 UIAutomationClientUIAutomationTypes 的引用。

您(或者我,如果您愿意)可以做的一个可能的改进是最初隐藏窗口,只有在选择了正确的选项卡后才显示它。但是,我不确定这是否可行,因为我不确定 AutomationElement.FromHandle 是否能够找到隐藏的窗口。

编辑:至少在我的电脑(Windows 7、32 位、.Net framework 4.0)上,以下代码最初创建了一个隐藏的任务管理器,并在选择了正确的选项卡后显示它。在选择性能选项卡后我没有明确显示窗口,所以可能其中一条自动化线作为副作用。

using System;
using System.Diagnostics;
using System.Windows.Automation;

namespace ConsoleApplication2 {
class Program {
static void Main(string[] args) {
// Kill existing instances
foreach (Process pOld in Process.GetProcessesByName("taskmgr")) {
pOld.Kill();
}

// Create a new instance
Process p = new Process();
p.StartInfo.FileName = "taskmgr";
p.StartInfo.CreateNoWindow = true;
p.Start();

Console.WriteLine("Waiting for handle...");

while (p.MainWindowHandle == IntPtr.Zero) ;

AutomationElement aeDesktop = AutomationElement.RootElement;
AutomationElement aeForm = AutomationElement.FromHandle(p.MainWindowHandle);
Console.WriteLine("Got handle");

// Get the tabs control
AutomationElement aeTabs = aeForm.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.Tab));

// Get a collection of tab pages
AutomationElementCollection aeTabItems = aeTabs.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.TabItem));

// Set focus to the performance tab
AutomationElement aePerformanceTab = aeTabItems[3];
aePerformanceTab.SetFocus();
}
}
}

为什么要销毁以前的任务管理器实例?当一个实例已经打开时,辅助实例将打开但立即关闭。我的代码不对此进行检查,因此查找窗口句柄的代码将卡住。

关于c# - 选择 'performance' 选项卡调用 Windows 任务管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com