Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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 значение.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам