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

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

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

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

j=GetWindowText(hstx,txtx, 255 )

Так работает, хотя честно я не понял зачем дважды 255?!
...
Рейтинг: 0 / 0
19.09.2006, 20:07:34
    #33998037
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetWindowText не работает в VBA?
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
20.09.2006, 09:06:24
    #33998516
vallot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetWindowText не работает в VBA?
Спасибо за разъяснение и помощь!
Возьму на заметку!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / GetWindowText не работает в VBA? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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