Функция называется одинаково, просто в NT-системах большинство API-функций имеет два варианта реализации, с окончанием "A" для ANSI-варианта, и с окончанием "W" для Unicode-варианта.
Скорее всего ты не преобразовывал строку из Unicode в ANSI (StrConv(Var, vbFromUnicode)), когда передавал аргумент в функцию.
Попробуй делать так:
Декларация:
- Код: Выделить всё
Declare Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hWnd As Long, _
ByVal lpClassName As Long, _
ByVal nMaxCount As Long) As Long
Использование:
- Код: Выделить всё
Dim CName As String, ret As Long
...
CName = Space$(1024)
ret = GetClassName(Me.hWnd, StrPtr(CName), Len(CName))
StrPtr (или PtrStr, не помню точно), это указатель на строку, правда это недокументированная и неподдерживаемая функция. В крайнем случае для получения указателя используй GlobalAlloc и GlobalLock.
Lasciate ogni speranza, voi ch'entrate.