доступ к TextBox-у во внешней программе

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

доступ к TextBox-у во внешней программе

Сообщение Фролов Сергей » 29.05.2003 (Чт) 11:55

Подскажите, плиз, как в запущенном приложении считать содержимое TextBox-a другой программой?
Мне нужно не меняя старой программы обработать введенные в поля данные новой программой. через API нахожу новое окно, могу считать его Caption, а вот с TextBox-ом слабо:)

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 29.05.2003 (Чт) 13:09

А у текстбокса вроде бы нет hWnd. Попробуй запустить Spy++ и там посмотреть на приложение, которое тебя интересует. Если найдешь нужный текстбокс, то поймешь как реализовать доступ к нему из своей проги. Если не найдешь - видимо ничего не выйдет.

Фролов Сергей
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 29.05.2003 (Чт) 11:49
Откуда: Москва

Сообщение Фролов Сергей » 29.05.2003 (Чт) 13:51

спасибо:) как раз этим и занимаюсь - надеялся на более "халявное" решение

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.05.2003 (Чт) 13:59

Александр Андреев писал(а):А у текстбокса вроде бы нет hWnd. Попробуй запустить Spy++ и там посмотреть на приложение, которое тебя интересует. Если найдешь нужный текстбокс, то поймешь как реализовать доступ к нему из своей проги. Если не найдешь - видимо ничего не выйдет.

что значит у TextBox'а hWnd нет
а это что по вашему
Property hWnd As Long
read-only
Member of VB.TextBox
Returns a handle (from Microsoft Windows) to an object's window.


TextBox является стандартным окном с именем класса Text (или TextBox)

делается это очень просто

1. FindWindow - ищем окно нужной нам программы
2. FindWindowEx - ищем нужный TextBox
3. SetWindowText - пишем в TextBox (GetWindowText - читаем)
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 29.05.2003 (Чт) 14:23

Упс... :? путаница в понятиях возникла:
- если textbox - это editbox, то hWnd безусловно есть;
- если textbox - это label, то hWnd нет и быть не может.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.05.2003 (Чт) 14:29

Александр Андреев писал(а):Упс... :? путаница в понятиях возникла:
- если textbox - это editbox, то hWnd безусловно есть;
- если textbox - это label, то hWnd нет и быть не может.

VB'шный Label это вообще неизвестно что
виндовские label'ы если я не ошибаюсь основаны на классе Window (также как и большинство контролов), а VB'шный нет, он какойто особенный. вот по-этому у него и нет hWnd
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Фролов Сергей
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 29.05.2003 (Чт) 11:49
Откуда: Москва

Сообщение Фролов Сергей » 29.05.2003 (Чт) 15:21

посмотрел Spy-ем hWnd у него действительно есть, а вот GetWindowText ничего не дает почему-то :? Есть еще идеи? Ковыряю пока дальше...

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.05.2003 (Чт) 15:34

Фролов Сергей писал(а):посмотрел Spy-ем hWnd у него действительно есть, а вот GetWindowText ничего не дает почему-то :? Есть еще идеи? Ковыряю пока дальше...


вот тебе примерчик из API-Guide

Код: Выделить всё
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Form_Activate()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim MyStr As String
    'Create a buffer
    MyStr = String(100, Chr$(0))
    'Get the windowtext
    GetWindowText Me.hwnd, MyStr, 100
    'strip the rest of buffer
    MyStr = Left$(MyStr, InStr(MyStr, Chr$(0)) - 1)
    'Triple the window's text
    MyStr = MyStr + MyStr + MyStr
    'Set the new window text
    SetWindowText Me.hwnd, MyStr
End Sub


можешь кинуть на форму TextBox и заменить Me на имя этого бокса
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Фролов Сергей
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 29.05.2003 (Чт) 11:49
Откуда: Москва

Сообщение Фролов Сергей » 29.05.2003 (Чт) 15:44

уфф... ну наконец-то заработало:) всем спасибо:) самое нудное - перебирать ВСЕ элементы формы в поисках нужного объекта


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

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

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

    TopList