Как получить вложенный дочерний дескриптор и установить их значения с помощью WinApi - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь установить выбранное для текста и списка значение следующих двух дескрипторов:

1) На первом изображении ниже: дескриптор «Выбрать файл базы данных» родительский - Изменить, текстовое поле и установить его свойство. Я могу получить родительский дескриптор, но не могу получить дочерний элемент Edit (текстовое поле) и установить для него свойство текста.

//Getting Parent Handle
IntPtr hwnd = (IntPtr)Win32.Functions.FindWindow(null, "Select Database File");

//Attempting to get child handle
IntPtr h =
        (IntPtr)Win32.Functions.FindWindowEx(hwnd, IntPtr.Zero, "Edit", null);
    if (h != IntPtr.Zero)
    {
        //setting text
                Win32.Functions.SetWindowText((IntPtr)h, "qwerty");
    }

Follow Является ли рекурсивная функция, в которой я передаю дескриптор Parent, но при этом возвращается значение дескриптора вместо имя окна / класса, где я могу редактировать / приводить дочерний дескриптор, который мне нужен. publi c stati c Список GetAllChildrenWindowHandles (IntPtr hParent, int maxCount) {

            List<IntPtr> result = new List<IntPtr>();
            int ct = 0;
            IntPtr prevChild = IntPtr.Zero;
            IntPtr currChild = IntPtr.Zero;
            while (true && ct < maxCount)
            {
                currChild = (IntPtr)Win32.Functions.FindWindowEx(hParent, prevChild, null, null);
                if (currChild == IntPtr.Zero) break;
                result.Add(currChild);
                prevChild = currChild;
                ++ct;
            }
            return result;
        }

Image 1 - Textbox

2) Из второго нужного мне изображения чтобы получить список (000DD04A4) из родительского дескриптора (00300762) и выбрать первый элемент в списке,

Image 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...