Получение информации из других приложений

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

Получение информации из других приложений

Сообщение pronto » 10.01.2006 (Вт) 12:34

Возникла простая, на первый взгляд, задача - считать текстовое значение текстбокса, который принадлежит другой проге. А?

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 10.01.2006 (Вт) 12:47

Наверно в поиск пошлют...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 10.01.2006 (Вт) 12:48

FindWindow
FindWindowEx

Посмотри пример на vb.kiev.ua

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 11.01.2006 (Ср) 11:11

Я знаю 3 способа изымания текста из текстбокса.
Первый:
Код: Выделить всё
Public Function GetText1(ByVal hwnd As Long) As String
Dim l As Long, s As String, lc As Long, i As Long
GetText1 = ""
lc = SendMessageL(hwnd, EM_GETLINECOUNT, 0, 0) - 1
For i = 0 To lc
    l = SendMessageL(hwnd, EM_LINEINDEX, i, 0)
    l = SendMessageL(hwnd, EM_LINELENGTH, l, 0) + 1
    s = String$(l + 2, 0)
    Mid$(s, 1, 1) = Chr$(l And &HFF)
    Mid$(s, 2, 1) = Chr$(l \ &H100)
    l = SendMessageS(hwnd, EM_GETLINE, i, s)
    GetText1 = GetText1 & Left$(s, l) & IIf(lc = 0 Or lc = i, "", vbCrLf)
Next
End Function

Второй:
Код: Выделить всё
Public Function GetText2(ByVal hwnd As Long) As String
Dim l As Long, s As String
l = SendMessageL(hwnd, WM_GETTEXTLENGTH, 0, 0) + 1
s = String$(l, 0)
l = SendMessageS(hwnd, WM_GETTEXT, l, s)
GetText2 = Left$(s, l)
End Function

Третий:
Код: Выделить всё
Public Function GetText3(ByVal hwnd As Long) As String
Dim l As Long, s As String
l = GetWindowTextLength(hwnd) + 1
s = String$(l, 0)
l = GetWindowText(hwnd, s, l)
GetText3 = Left$(s, l)
End Function


2 и 3 практически идентичны, и применимы к любым окнам. А вот первый можно использовать ТОЛЬКО с текстбоксами.

P.S. SendMessageS и SendMessageL:
Код: Выделить всё
Public Declare Function SendMessageS Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Public Declare Function SendMessageL Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Нет ничего невозможного для человека с интеллектом.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 11.01.2006 (Ср) 11:58

Всем спасибо за содействие!
Наконец-то разобрался...


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList