|
![]() |
#1 |
Участник
|
Попробовал я набросать проект и не получилось.
Взял пример от Товарищ ♂uatr запихнул его в C# проект (консольное приложение) - все работает (правда запускать надо debug версию, ну не суть) Запускаем проект, он спрашивает hwnd окна Даем ему hwnd в десятичном виде (в моем примере 67552) в ответ текст Цитата:
Waiting for HWND input (in decimal format):
67552 HWND hex:107E0; Name:SalesTable; HWND:67552 HWND hex:107E0; Description:\Data Dictionary\Tables\SalesTable: 7; HWND:67552 Оговорюсь что нужно скармливать не hwnd окна АОТ (с ClassName AxMDIChildWindow) а hwnd дочернего к нему окна (с ClassName AxPaneWnd) Текст проекта X++: // [url=http://axforum.info/forums/showthread.php?p=434649#post434649]Dax 2012 получить путь к Treenode (Toolbar, tabax)[/url] // Товарищ ♂uatr using System; using System.Runtime.InteropServices; using System.Security; using Accessibility; namespace AotInspectWindows { class Program { [DllImport("oleacc.dll")] private static extern int AccessibleObjectFromWindow(IntPtr hwnd, uint id, ref Guid iid, [In, Out, MarshalAs(UnmanagedType.IUnknown)] ref object ppvObject); static void Main(string[] args) { object accessibleObj = null; string name; string description; Guid guid = new Guid("{618736E0-3C3D-11CF-810C-00AA00389B71}"); Console.WriteLine("Waiting for HWND input (in decimal format):"); string ptr = Console.ReadLine(); // вводить в десятичном формате IntPtr handle = new IntPtr(Convert.ToInt32(ptr)); // int result = AccessibleObjectFromWindow(handle, (uint)OBJID.OBJID_WINDOW, ref guid, ref accessibleObj); // для такого вызова будет пустым get_accDescription() но непустым get_accName() int result = AccessibleObjectFromWindow(handle, (uint)OBJID.OBJID_CLIENT, ref guid, ref accessibleObj); // а для такого все ок - и get_accDescription() и get_accName() - непустые name = ((IAccessible)accessibleObj).get_accName(0); Console.WriteLine($"HWND hex:{handle.ToString("X")}; Name:{name}; HWND:{handle}"); description = ((IAccessible)accessibleObj).get_accDescription(0); Console.WriteLine($"HWND hex:{handle.ToString("X")}; Description:{description}; HWND:{handle}"); Console.ReadKey(); } public enum OBJID : uint { OBJID_WINDOW = 0x00000000, OBJID_SYSMENU = 0xFFFFFFFF, OBJID_TITLEBAR = 0xFFFFFFFE, OBJID_MENU = 0xFFFFFFFD, OBJID_CLIENT = 0xFFFFFFFC, OBJID_VSCROLL = 0xFFFFFFFB, OBJID_HSCROLL = 0xFFFFFFFA, OBJID_SIZEGRIP = 0xFFFFFFF9, OBJID_CARET = 0xFFFFFFF8, OBJID_CURSOR = 0xFFFFFFF7, OBJID_ALERT = 0xFFFFFFF6, OBJID_SOUND = 0xFFFFFFF5, } } } Последний раз редактировалось Logger; 27.11.2022 в 20:07. |
|
Теги |
aot, sidax, tabax, toolbar |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|