Страница: 1 |
Страница: 1 |
Вопрос: wm_paste
Добавлено: 11.02.06 17:51
Автор вопроса: zulus
Доброго времени суток!
Я тут вытаюсь сделать прогу, которая бы вставляла текст в окно (не в одно из окон моей проги) используя при этом что-то типа:
Clipboard.SetText ("sample")
SendMessage cHwnd, WM_PASTE, 0, 0
и ничего не происходит.
Что я не так делаю?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #1
Добавлено: 11.02.06 23:30
Неужели никто не поможет бедному ламерку?
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 12.02.06 02:20
Зависит от типа окна и того, как ты получал его хандл
Номер ответа: 3
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #3
Добавлено: 12.02.06 13:09
все делается в timer'е до тех пор пока текст не вставится в какое-либо активное окно (не мое), затем timer вырубается
проверялось на блокноте - не фига не работает
Вот кусок кода:
'определение окна:
cHwnd = GetForegroundWindow()
'сравнение окна с Hwnd моей проги:
If (cHwnd <> Me.hwnd) And (cHwnd <> Me.List1.hwnd) And (cHwnd <> Me.Text1.hwnd) And (cHwnd <> Me.butDelete.hwnd) And (cHwnd <> Me.butPaste.hwnd) Then
Clipboard.SetText ("sample"
SendMessage cHwnd, WM_PASTE, 0, 0
Timer2.Enabled = False
End If
Номер ответа: 4
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #4
Добавлено: 12.02.06 18:03
ага, а куда, собственно WM_PASTE происходит? Туда, где фокус, а где фокус?..
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 12.02.06 19:50
GetForegroundWindow получает активное окно, а не активный контрол внутри него. А обычное окно (не Edit etc) WM_PASTE не обрабатывает.
Номер ответа: 6
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #6
Добавлено: 12.02.06 20:08
Ладно, а как тогда получить активный контрол? Есть какие-то АПИ, чтобы перебирая все контролы в текущем окне получить то, что нужно?
PS: а как потом узнать можно ли в этот контрол сделать Paste или нет?
Номер ответа: 7
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #7
Добавлено: 13.02.06 11:37
А GetFocus не поможет?
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 13.02.06 12:38
GetFocus не катит, т.к. The GetFocus function retrieves the handle to the window that has the keyboard focus, if the window is attached to the calling thread's message queue.
Используй GetWindowThreadProcessId, а потом GetGUIThreadInfo.
Узнать, делается ли Paste можно, думаю, смотря на возвращаемое SendMessage значение.