Использование "Inspect.exe" не может найти некоторые элементы, почему?

Я хочу использовать C# написать программу автоматизации пользовательского интерфейса, но я не могу найти некоторые элементы с помощью "Inspect.exe". Не могу найти изображения текстовых меток (например, image1), почему?

image1:

image2:

Пример кода:

var desktop = AutomationElement.RootElement;

var condition = new PropertyCondition(AutomationElement.NameProperty, "Customer Register");

var window = desktop.FindFirst(System.Windows.Automation.TreeScope.Children, condition);

1 ответ

Код, который вы разместили для получения элементов, верен из того, что я вижу на вашем снимке экрана от inspect. У меня такое ощущение, что UI Automation не возвращает имя из-за кодировки текста. Если у вас нет доступа к источнику, и вы не можете связываться с тем, как он получает и устанавливает текст для этих меток, получить текст с помощью автоматизации пользовательского интерфейса будет невозможно.

Вы можете использовать код, который у вас есть, и использовать собственный дескриптор окна для окна с API win32, чтобы получить текст.

 [DllImport("user32.dll", CharSet = CharSet.Auto)]
 static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, [Out] StringBuilder lParam);
 public static string GetWindowTextRaw(IntPtr hwnd)
 {
     // Allocate correct string length first
     int length = (int)SendMessage(hwnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);
     StringBuilder sb = new StringBuilder(length + 1);
     SendMessage(hwnd, WM_GETTEXT, (IntPtr)sb.Capacity, sb);
     return sb.ToString();
 }

 public static void YourMethod() 
 {
     var desktop = AutomationElement.RootElement;

     var process = Process.Start("Path/To/Your/Process.exe");

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

     var window = desktop.FindFirst(System.Windows.Automation.TreeScope.Children, condition);

     var windowTitle = GetWindowTextRaw(window.NativeWindowHandle)
 }

Источники:

GetWindowText
Отправить сообщение

Другие вопросы по тегам