Получить текст с чужого окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 15:50

Есть такая проблема, нужно получить текст в окна чужого приложения. Но текст там очень большой и поэтому передаётся лишь малая часть этого текста, а нужен как раз конец. Так как можно его получить?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 16:20

Код покажи

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 16:22

Код: Выделить всё
Private Sub cmd_GetTest_Click()
Dim WinText As String, textLen As Long
hwnd_Garena_Window = FindWindow(vbNullString, "Garena")
EnumChildWindows hwnd_Garena_Window, AddressOf WndEnumChildProc, vbNull
textLen = SendMessage(hwnd_Garena_Window_Chat, WM_GETTEXTLENGTH, 0, 0)
If (textLen) Then
    WinText = String(textLen, Chr$(0))
    Call SendMessage(hwnd_Garena_Window_Chat, WM_GETTEXT, textLen, ByVal WinText)
    txt_Text.Text = WinText
End If
End Sub

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 16:25

textLen правильное значение показывает? Какое?

Ох уж эти гареновзломщики...

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 16:29

Никто ламать не собирается, я пробовал поставить свои, ничё не выходит, что 150000, что 160000 одно и тоже =\

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 16:33

Получай не в стринг, а в Byte или в Long, и не надо брать больше чем есть

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 16:40

Строку получать в лонг? о_О

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 16:41

Адрес

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 16:42

Какой адрес, ты о чём?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 16:43

Адрес в адресном пространстве, начиная с которого расположена строка

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 16:45

Эм... код-пример можно?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 17:02

Dim fff(6) As Byte
SendMessage hwnd, WM_GETTEXT, 7, fff(0)

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 17:08

Сделал я такой код:
Код: Выделить всё
Private Sub cmd_GetTest_Click()
Dim WinText As String
Dim textLen As Long
Dim fff() As Byte
hwnd_Garena_Window = FindWindow(vbNullString, "Garena")
EnumChildWindows hwnd_Garena_Window, AddressOf WndEnumChildProc, vbNull
textLen = SendMessage(hwnd_Garena_Window_Chat, WM_GETTEXTLENGTH, 0, 0)
ReDim fff(textLen) As Byte
If (textLen) Then
    WinText = String(textLen, Chr$(0))
    'Call SendMessage(hwnd_Garena_Window_Chat, WM_GETTEXT, textLen, ByVal WinText)
    SendMessage hwnd_Garena_Window_Chat, WM_GETTEXT, textLen, fff(0)
    For x = 0 To textLen
        txt_Text.Text = txt_Text.Text & Chr(fff(x))
    Next x
End If
End Sub

Но появляется ошибка что память не может быть прочитана =\

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 17:13

объявления покажи

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 17:15

Изображение

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 17:26

Да не ошибку, а объявление функции SendMessage

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Получить текст с чужого окна

Сообщение Хакер » 19.05.2009 (Вт) 18:03

Что за окно (класс окна), с которого получается текст?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 18:40

Класс RichText

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Получить текст с чужого окна

Сообщение Хакер » 19.05.2009 (Вт) 18:52

Какого размера текст?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 18:59

Несколько десятков тысяч. А вообще пробовал с маленьким через байты, но они все равны нулю =\
Код: Выделить всё
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Получить текст с чужого окна

Сообщение Хакер » 19.05.2009 (Вт) 19:02

Несколько десятков тысяч.

Точнее!
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 19:03

Сейчас WM_GETTEXTLENGTH выводит 71797, но обычно больше

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Получить текст с чужого окна

Сообщение arvitaly » 19.05.2009 (Вт) 19:03

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


Попробуй так

RazArt
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 08.09.2008 (Пн) 14:55
Откуда: Н.Новгород

Re: Получить текст с чужого окна

Сообщение RazArt » 19.05.2009 (Вт) 19:08

Всё спс, так работает


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList  
cron