Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: domkratt.com
 Профиль | | #1
Добавлено: 13.03.08 03:33
Ну как бы надо выделить память под строку, а не просто создать указатель на невыделеную область (что ты и делаешь, объявляя строковую переменную) =)

Dim ClassName As String
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
Вот спасибо, про ход
ClassName = Space(21)
я не знал. Помогли, пасибки.

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 13.03.08 19:08
Это не ход, а вынужденная необходимость, связанная с тем, что передавая строковый буфер в API-функцию, ты гарантируешь, что он достаточной длины.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам