Страница: 1 |
Страница: 1 |
Вопрос: Окна чужих программ в VB.NET
Добавлено: 08.01.08 23:30
Автор вопроса: VoVaN | ICQ: 4921085
Подскажите, плиз, как прочитать текст из окна чужой программы (например, аськи) средствами VB.Net...
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
HuKeJIb 7C9
Вопросов: 2
Ответов: 24
Профиль | | #1
Добавлено: 09.01.08 09:04
Нужно получить handle окна, затем использовать функцию GetWindowText. А чтобы получить handle, надо использовать другие функции(GetActiveWindow, WindowFromPoint,...)
Номер ответа: 2
Автор ответа:
HuKeJIb 7C9
Вопросов: 2
Ответов: 24
Профиль | | #2
Добавлено: 09.01.08 14:13
оказалось, GetWindowText для текстовых полей не работает Поэтому надо делать через SendMessage:
'на форму кидаем таймер и текстбокс со свойством multiline=true
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public Const WM_COPY = &H301
Public Const EM_SETSEL = &HB1
Public Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Clipboard.Clear()
Me.Text = WindowFromPoint(Cursor.Position.X, Cursor.Position.Y)
SendMessage(Me.Text, EM_SETSEL, 0, -1)
SendMessage(Me.Text, WM_COPY, 0, 0)
SendMessage(Me.Text, EM_SETSEL, 0, 0)
TextBox1.Text = Clipboard.GetText()
End Sub
в результате при наведении мышки на чужое текстовое поле в наше копируется его содержимое.
ЗЫ: для остальных контролов можно юзать GetWindowText