Необходимо вывести текст в приложение с заведомо неизвестным дискриптором окна.
делаю так:
hw := GetWindow(Application.Handle, GW_HWNDNEXT);
EnumChildWindows(hw, @ChildTree, 0);
в @ChildTree ищу 'Edit', получаю его Handle;
SetActiveWindow(Handle);
окно получает фокус клавиатуры, но после
SendMessageW(Handle, WM_KEYDOWN, msg.CharCode, msg.KeyData);
в окне ничего не пишется?
Здравствуйте, _Anton, Вы писали:
_A>Необходимо вывести текст в приложение с заведомо неизвестным дискриптором окна. _A>делаю так: _A>hw := GetWindow(Application.Handle, GW_HWNDNEXT); _A>EnumChildWindows(hw, @ChildTree, 0); _A>в @ChildTree ищу 'Edit', получаю его Handle; _A>SetActiveWindow(Handle); _A>окно получает фокус клавиатуры, но после _A>SendMessageW(Handle, WM_KEYDOWN, msg.CharCode, msg.KeyData); _A>в окне ничего не пишется?
> SendMessageW(Handle, WM_CHAR, msg.CharCode, msg.KeyData); аналогично не > работает >
Вот уж не знаю как у тебя не работает, но: открываю блокнот, открываю Spy++, нахожу HWND Edit'а и делаю следующее:
> "Необходимо вывести текст в приложение с заведомо неизвестным > дискриптором окна" >
Ну дык а для чего же ты тогда делал:
EnumChildWindows(hw, @ChildTree, 0);
в @ChildTree ищу 'Edit', получаю его Handle?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
> дело то в том, что spy++ тут вообще не помошник >
Он нужен лишь для того, чтобы понять в каких родственных отношениях находятся окна нужного тебе приложения!!!
> MSDN не дает общей концепции >
И нафига он только нужен?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
ничего, кроме того, что фокус приходит в наше приложение из приложения, куда мы хотим посылать сообщения с буквами.
пример: работа экранной клавиатуры Windows: щелкаем в любом окне и печатаем
не работает, потому что
hw:= GetWindow(Application.Handle, GW_HWNDNEXT);
возвращает не дискриптор предыдущего приложения(которое находилось в фокусе до этого)
вот и вырисовалась проблема: получить hendle предыдущего фокусированного приложения
> пример: работа экранной клавиатуры Windows: щелкаем в любом окне и > печатаем >
Вот с этого-то и надо было начинать!!!
Не майся фигнёй с посылкой сообщений окнам — тебе нужны сообщения клавиатуры (keybd_event)!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!