Понадобилось мне сделать переключалку языков на Visual Basic 6. Поискал по Интернету, везде один и тот же вариант:
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
' Переключаем на русский
Call ActivateKeyboardLayout(68748313, 0)
' Переключаем на английский
Call ActivateKeyboardLayout(67699721, 0)
Или варианты той же программы, например, отсутствует слово Private, или числа вынесены в отдельные константы. Но это неважно.
И главное, на форумах все говорят: Спасибо, всё прекрасно работает!
А у меня, как ни ввожу, на оператор Declare выдает вот такую ошибку:
Only comments may appear after End Sub, End Function, or End Property
Причем независимо от того, куда я эту строку ставлю - в начале программы, где определения Dim и Const или в середину, прямо там, где мне нужно переключать раскладку, в том модуле, в котором я ее переключаю, или в модуле Form_Load, или в любом другом.
А если этот оператор поставить в область (Declarations), где ему, казалось бы, самое место, то получаю вот такую ошибку:
Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules
Вопрос: Как заставить этот код работать? Может, надо ещё какие-то действия произвести?
А может быть, нужно просто скопировать этот файл user32.dll из каталога Windows\System32 в каталог моего проекта?
Что скажете?
Спрашивал на другом форуме, там тоже все говорят, что нормально работает.
Неужели у меня одного эта ошибка вылезает? В чем дело может быть?