pywinauto не видит, из каких дочерних объектов состоит компонент

Подскажите, пожалуйста, как можно узнать, из каких элементов состоит компонент (TDBGridEh) пользовательского интерфейса другого приложения. Или объясните, почему ни один API автоматизации (ни win32, ни uia) не предоставляет информацию (подробности на скриншоте)

Контекст: Я создаю приложение на Python для автоматизации другого приложения, написанного на Delphi. Удалось с помощью библиотеки win32gui управлять такими компонентами, как Checkbox, Static, SysListView32, отправляя сообщения с помощью SendMessage. C помощью pywinauto также смогла извлечь данные из компонента TPairTreeViewCheck. Но для TDBGridEh это никак не работает.

Вероятно, связано с тем, что компонент реализован с закрытым исходным кодом.
Или в чем может быть проблема и как я могу получить к компоненту доступ?

на c# переходите - используйте

        public delegate bool CallBackPtr(IntPtr hWnd, int lParam);
        public delegate bool PropEnumProcEx(IntPtr hWnd, IntPtr lpszString, int hData, int dwData);
        public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr parameter);

 [DllImport("user32.dll")]
                [return: MarshalAs(UnmanagedType.Bool)]
                public static extern bool EnumChildWindows(IntPtr hWndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);

 [DllImport("user32.dll")]
                public static extern int EnumWindows(CallBackPtr callPtr, int lPar);

правда

обработчик писать муторно

Спасибо! Могу ошибаться, но user32.dll - библиотеки Win32API, а я уже пыталась подобраться к компоненту с помощью win32gui и win32api средствами python, и они не видят, что у компонента есть дочерние элементы. Да и переписывать всё приложение на c# уже нецелесообразно.
Но спасибо большое за совет!

USER32. DLL implements весь вообще Windows USER component that creates and manipulates the standard elements of the Windows user interface, such as the desktop, windows, and menus.

с# p/invoke для упрощения чтобы не писать на с как вот напимер

1 Like

Поняла. Спасибо!