У меня уникальный вызов. Мне было поручено манипулировать элементами управления стороннего приложения из моего собственного приложения, и я ограничен .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 пуст после звонка. В любом случае, это была безумная догадка. Есть идеи?