Страница: 1 |
Страница: 1 |
Вопрос: Ещё вопрос по API-функции
Добавлено: 13.03.08 02:42
Автор вопроса:
Oleg | ICQ: 407182478
Нескладуха следующего формата. Пытаюсь вызвать API-функцию
Public Declare Function GetClassName _
Lib "user32.dll" Alias "GetClassNameA" ( _
ByVal hwnd As Long, _
ByVal lpClassName As String, _
ByVal nClassName As Long) As Long
Public HandleOfForm2 As Long
код модуля
Dim ClassName As String
.
.
GetClassName HandleOfForm2, ClassName, 20
и все.. exel аварийно прекращает работу.
В доке по GetClassName написано, что она в качестве второго параметра принимает указатель на БУФЕР, в который будет помещаться имя класса окна. Как объявить этот, блин, буфер в VBA?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 13.03.08 03:33
Ну как бы надо выделить память под строку, а не просто создать указатель на невыделеную область (что ты и делаешь, объявляя строковую переменную)
ClassName = Space(21)
GetClassName HandleOfForm2, ClassName, 20
ClassName=RTrim$(ClassName)
Номер ответа: 2
Автор ответа: VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 13.03.08 11:26
http://www.megaflash.ru/
Номер ответа: 3
Автор ответа: Oleg
ICQ: 407182478
Вопросов: 9
Ответов: 10
Профиль | | #3
Добавлено: 13.03.08 16:53
Вот спасибо, про ход
Номер ответа: 4
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 13.03.08 19:08
Это не ход, а вынужденная необходимость, связанная с тем, что передавая строковый буфер в API-функцию, ты гарантируешь, что он достаточной длины.