![]() |
Delphi: sendmessage не работает
Код
h:=findwindow(nil, pchar(edit1.text)); sendmessage(h, wm_close, 0, 0);пашет нормально, но другие сообщения sendmessage(h, WM_NEXTDLGCTL, 0, 0); sendmessage(h, WM_PASTE, 0, 0);не оказывают влияния на получателя. Что я делаю неправильно? |
первое ты шлеш не тому контролу -- нужно его родителю.
насчет второго... у тебя формат данных какой? должен быть CF_TEXT |
то есть родителю? я получаю дескриптор окна и пытаюсь вставить в активный компонент. нифига не вставляется не в формате дело. Может нада дописать wm_paste, x, y?
|
Цитата:
Цитата:
|
А можно вопрос? Нафига такие извраты?
|
Цитата:
Цитата:
Так че делать? |
у тебя что в sendmessage(h, WM_NEXTDLGCTL, 0, 0) что в sendmessage(h, WM_PASTE, 0, 0) одинаковые хэндлы ( по приведенному коду )
получается что ты или и текст шлеш родителю или пытаешся заставить edit сменить контрол |
Так я сначала меняю контрол на текстовый (т.к. знаю, что следующий будит текстовым типа TMemo), а потом пытаюсь вставить в него текст.
|
"сначала" это когда? и как ты его меняеш?
давай по-порядку: ты нашел окно. что потом? |
Цитата:
2. запускаю свою прогу, и ту, в которую нужно вставить текст 3. нажимаю в своей проге "Поехали!" с кодом: h:=findwindow(nil, pchar(edWindowHeader.text)); //ищу по тексту из едита sendmessage(h, WM_NEXTDLGCTL, 0, 0); sendmessage(h, WM_NEXTDLGCTL, 0, 0); (*знаю, что текстовый компонент третий по порядку*) sendmessage(h, WM_PASTE, 0, 0); //вставка из буфера Прикол в том, что ничего не происходит, но если в этой же проге (чужой) нажать два раза TAB, то активным будет текстовый компонент |
в коде куча ошибок.
первая: Цитата:
вторая: h:=findwindow(nil, pchar(edWindowHeader.text)); sendmessage(h, WM_NEXTDLGCTL, 0, 0); эти кодом ( если предположить что он работает и h -- HANDLE edit' a ) ты просиш edit переключить фокус на следующий из своих контролов ( о чем я и говорил ) что не правильно -- нет у него никаких контролов. |
Цитата:
Цитата:
Цитата:
в этом случае поиск чужого окна произвожу по имени окна, которое для гибкости беру из своего edit.text, в итоге получаю что-то вроде: h:=findwindow(nil, 'Безымянный - Блокнот'); причем h<>0 (при выполнении проги). |
Цитата:
Цитата:
тогда этой: sendmessage(h, WM_PASTE, 0, 0); строкой ты вставляеш текст в найденное тобой окно ( а не в edit ) |
Цитата:
а как сделать? |
нет. сообщение идет по адресу, а адрес -- handle окна.
что делать?.. можеш юзать: Код:
HWND FindWindowEx( |
| Часовой пояс GMT +4, время: 19:10. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.