Получение текста из status bar сторонней программы

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

cousloum
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 30.06.2010 (Ср) 12:39

Получение текста из status bar сторонней программы

Сообщение cousloum » 15.07.2010 (Чт) 21:15

Пытаюсь получить текст из status bar сторонней программы:
Код: Выделить всё
Private Const WM_USER As Integer = &H400
Private Const SB_GETTEXTA As Integer = WM_USER + 2
Private Const SB_GETTEXTLENGTHA As Integer = WM_USER + 3
Declare Auto Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Declare Auto Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
...
Dim nomer As Integer = 1
Dim text As String = Space(SendMessage(hwnd, SB_GETTEXTLENGTHA, nomer, 0) + 1)
SendMessage(hwnd, SB_GETTEXTA, nomer, text)
TextBox1.Text = text

Программа в которой находится status bar вылетает и выдает исключение:
"Необработанное исключение в "0x773c6762" в "DjVuPro.exe": 0xC0000005: Нарушение прав доступа при записи "0x0419e398"." При этом длина текста получается как положено, а вот сам текст никак не получается. Пробовал менять типы данных, длину буфера, но это не помогло :|
Подскажите, пожалуйста, в чем может быть моя ошибка.

Samsonov
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 22.04.2010 (Чт) 7:32
Откуда: DC

Re: Получение текста из status bar сторонней программы

Сообщение Samsonov » 27.07.2010 (Вт) 7:09

cousloum писал(а):
Код: Выделить всё
Declare Auto Function … Alias "SendMessageA" …
Declare Auto Function … Alias "SendMessageA" …
Может, не надо так категорично тяготеть к ANSI-версиям функций?

Да и приёмный буфер text можно было бы на время теста объявить не как строку, а как массив байтов с приличным запасом по длине.

cousloum
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 30.06.2010 (Ср) 12:39

Re: Получение текста из status bar сторонней программы

Сообщение cousloum » 28.07.2010 (Ср) 18:37

Что я только не пробовал делать, но ничего так и не получилось. Видел правда одно решение, но оно показалось мне сложным, поэтому его даже не испытывал. К счастью, в программе нужные данные отображались не только в статусбаре, но и в несколько усеченном виде в edit комбобоксов.


Вернуться в Visual Basic .NET

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

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

    TopList