Нужно вставить содержимое буфера обмена в активное окно активного процесса (окно ессно может принимать такие вещи, блокнот например). Как это сделать более цивилизованным способом, чем посылать комбинацию Ctrl + V ?
Стданно как-то... не работает... Заменил в коде отправку нажания кнопок на вышенаписанное - программа перестала вставлять из буффера. ???
2rmn: как послать собщение прямо едиту? нужно знать его hwnd, а если оно дите от главного окна через туеву хучу родичей? 2IceStudent: я и использовал GetForegroundWindow если послать WM_SETTEXT - он же полностью затирает старый текст, это не подходит GetFocus работает только для своего треда, тоже не то как же это, блин, винда делает?
если вставляешь через мышь винда скорее всего берет хендл через WindowFromPoint, а если через клаву, то GetFocus.
огромное спасибо всем, кто ответил! 2yureckor: похоже на то. я сделал такой эксперимент: взял winspy, нашел хендл edita в блокноте, в своей программе получателем WM_PASTE указал эту константу - все сработало. если же получатель - главное окно блокнота - не срабатывает. отсюда вопрос: возможно ли как-то указать, что конкретное сообщение должно быть передано всем дочерним окнам? либо: возможно ли найти (в чужом процессе) хендл окна, в котором производится непосредсвенный ввод с клавиатуры. еще вопрос по ходу, чтоб не создавать лишнюю тему: как в SoftIce переключиться на нужный просесс? что я нашел, так это ставить бряки на месседжи окнам, не очень удобно.
Вот я тупизень! GetFocus - действительно лучше всего. Я неправильно истолковал хелп - работает он для своего процесса, а не для треда. А в чужом процессе у меня есть длл с глобальнгым хуком, так что получить хендл edit-окна оказалось очень просто. Так же просто послать в него месседж. Все зашибись, но... Но не все edit-ы понимают WM_PASTE или EM_PASTESPECIAL напимер онко TQuestSynEdit в SQL Naigator-е Хотя проблема, в принципе, решена. Проблема была с этим самым навигатором - все приложения, кроме него, пересылали Ctrl + V дочерним окнам. Я думал, что главному окну нужно послать какое-нибудь специальное сообщение. А если я могу добраться непосредственно к edit-окну, то Ctrl + V меня в принципе устраивает, поскольку теперь все работает.
как я уже говорил, проблема была в том, что главное окно не пересылает это сообщение дочерним. но после того, как я добрался напрямую до edit-окна, эта проблема была решена.