gpt4 book ai didi

c# - 有没有一种简单的方法来检查重复的快捷键?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:44 25 4
gpt4 key购买 nike

我最近遇到了一个 Winforms 应用程序的情况,由于同一个快捷键被映射到多个控件,因此单个快捷键会触发多个事件。有没有一种简单的方法可以在应用程序中搜索此类重复键?我认识到它可能会针对不可能发生的情况提出误报,例如共享相同 key 的互斥对话框,但至少有一个起点会很好。

目前我能想到的最佳选择是在资源文件中搜索 .ShortcutKeys 数据,然后处理结果,但这似乎有点过度。

最佳答案

尝试使用 System.Windows.Automation 库来枚举快捷方式。这是一个查看任务管理器的快速而肮脏的示例。您必须添加对 UIAutomationClient 和 UIAutomationTypes 的引用。

class Program
{
static void Main(string[] args)
{
Process process = Process.GetProcessesByName("taskmgr").FirstOrDefault();

var condition = new PropertyCondition(AutomationElement.ProcessIdProperty, process.Id);

AutomationElement window = AutomationElement.RootElement.FindFirst(TreeScope.Children, condition);

AutomationElementCollection descendents = window.FindAll(TreeScope.Descendants, Condition.TrueCondition);

foreach (var descendent in descendents)
{
var foo = descendent as AutomationElement;

if (!string.IsNullOrWhiteSpace(foo.Current.AcceleratorKey))
Console.WriteLine(foo.Current.AcceleratorKey);

if (!string.IsNullOrWhiteSpace(foo.Current.AccessKey))
Console.WriteLine(foo.Current. AccessKey);
}

Console.WriteLine(descendents.Count);

Console.ReadLine();
}
}

输出:


Alt + 空格键

Alt+F

Alt+O

Alt+V

Alt+H

11

关于c# - 有没有一种简单的方法来检查重复的快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788193/

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