powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / GetWindowText не работает в VBA?
6 сообщений из 6, страница 1 из 1
GetWindowText не работает в VBA?
    #33992483
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В графической пограмме есть статическое окно, который показывает координаты курсора мыши , пытаюсь с помощью GetWindowText
вытащить эти показания, но не получается:
hstx-хэндл окна
txtx-текст
255-кол. символов

Код: plaintext
j=GetWindowText(hstx,txtx, 255 )

Подскажите, что не так?
...
Рейтинг: 0 / 0
GetWindowText не работает в VBA?
    #33993878
arseny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может так:
Код: plaintext
1.
2.
j=GetWindowText(hstx,txtx, 255 )
MsgBox Left(txtx, j)
...
Рейтинг: 0 / 0
GetWindowText не работает в VBA?
    #33995220
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arsenyМожет так:
Код: plaintext
1.
2.
j=GetWindowText(hstx,txtx, 255 )
MsgBox Left(txtx, j)
Вряд ли проблема в этом. Завершающий нуль ему и так строку отрежет. Скорее всего либо неправильно найден хендл окна, либо неправильно задан шаблон для GetWindowText, либо забыл выделить память под txtx. Если это не поможет, показывай полный код.
...
Рейтинг: 0 / 0
GetWindowText не работает в VBA?
    #33996250
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел! Надо было записать:

Код: plaintext
1.
2.
txtx = Space( 255 )

j=GetWindowText(hstx,txtx, 255 )

Так работает, хотя честно я не понял зачем дважды 255?!
...
Рейтинг: 0 / 0
GetWindowText не работает в VBA?
    #33998037
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vallotНашел! Надо было записать:
Код: plaintext
1.
txtx = Space( 255 )
j=GetWindowText(hstx,txtx, 255 )
Так работает, хотя честно я не понял зачем дважды 255?!Потому что GetWindowText как и большинство WinAPI функций не занимаются самостоятельным выделением памяти под принимающий буффер, а используют заранее выделеный кусок памяти.
Ты сам, у себя, выделяешь локальную память и отдаешь в GetWindowText() адрес выделеного куска и размер этого куска (второй и третий параметры).
На C аналогичный код будет выглядеть примерно так:
Код: plaintext
1.
2.
char *txtx;
txtx = malloc( 255 );
j = GetWindowText(hstx, txtx,  255 );
А если не хочешь писать 255 два раза - сделай себе универсальную константу типа
Код: plaintext
Public Const MAX_STRING_LENGTH As Integer =  255 
и используй ее.
Либо, как вариант:
Код: plaintext
1.
txtx = Space( 255 )
j=GetWindowText(hstx,txtx,len(txtx))
...
Рейтинг: 0 / 0
GetWindowText не работает в VBA?
    #33998516
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за разъяснение и помощь!
Возьму на заметку!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / GetWindowText не работает в VBA?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]