Как получить доступ к Combobox другое приложение из C # - PullRequest
0 голосов
/ 25 августа 2018

У меня уникальный вызов. Мне было поручено манипулировать элементами управления стороннего приложения из моего собственного приложения, и я ограничен .Net 3.5. Я могу написать текст в поле расширенного текста из буфера обмена и нажать кнопку (спасибо, Spy ++):

        // paste text into Rich Text Box
        IntPtr hwndChild = FindWindowEx((IntPtr)handle, IntPtr.Zero, "WindowsForms10.RichEdit20W.app.0.378734a", null);
        SendMessage(hwndChild, Msgs.WM_PASTE, 0, IntPtr.Zero);

        // click OK button
        hwndChild = FindWindowEx((IntPtr)handle, IntPtr.Zero, "WindowsForms10.BUTTON.app.0.378734a", null);
        SendMessage(hwndChild, Msgs.BM_CLICK, 0, IntPtr.Zero);

Теперь я пытаюсь получить доступ к комбинированному списку в другом приложении, чтобы сравнить его содержимое источника данных со значением, считанным из другого места, и, если это значение совпадает с одним в комбинированном окне, выберите это значение в поле со списком другого приложения. Моя заявка на C #.

Я могу получить дескриптор комбинированного списка в другом приложении, используя метод FindWindowEx () user32.dll, например:

hwndChild = FindWindowEx((IntPtr)handle, IntPtr.Zero, "WindowsForms10.STATIC.app.0.378734a", null);

Я использовал Spy ++, чтобы найти имя класса комбобокса, но не знаю, что делать дальше. Я попробовал это:

        NativeMessage lpMsg = new NativeMessage();
        PeekMessage(out lpMsg, hwndChild, 0, 0, 0x0000); // set wRemoveMsg to 0x0000

но lpMsg пуст после звонка. В любом случае, это была безумная догадка. Есть идеи?

1 Ответ

0 голосов
/ 28 августа 2018

Я клянусь, что попробовал это, но ответом было просто использовать это после загрузки буфера обмена с текстом:

SendMessage(hwndChild, Msgs.WM_PASTE, 0, IntPtr.Zero);

Я не разрешаю «Я пытаюсь получить доступ к комбинированному ящику в другом приложении, чтобы сравнить его содержимое источника данных со значением, считанным из другого места, и если это значение совпадает с одним в комбинированном ящике, то выберите это значение в "combox другого приложения" проблема, но по крайней мере я могу вставить в него.

...