powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать раскладку клавиатуры
21 сообщений из 21, страница 1 из 1
узнать раскладку клавиатуры
    #37273107
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите, как определить раскладку АКТИВНОГО окна? в инете не мало таких тем, но все коды, которые нашёл, определяют раскладку окна программы, а не активного окна. Желательно любого активного окна, не зависимо от имени. заранее спс
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37273133
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот мой код Option Explicit
' функция раскладки клавиатуры
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

Private Sub Timer1_Timer() 'интервал любой
Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName
If CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1))) = 409 Then 'Номер 409 - английская
Text1.Text = "английская клава"
Else '419 - русская
Text1.Text = "русская клава"
End If
End Sub
узнаёт раскладку своего окна но не активного... есть у кого идеи?)
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37273559
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдя походу ни у кого никаких идей
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37274585
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели никаких идей... хоть делай снимок экрана и смотри "рус" или "en" там нарисовано) а если серьёзно за 2 дня 42 просмотра и ток мои комменты. полюбэ как-то можно узнать раскладку активного окна...
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37274871
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275007
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke,

спс, первый, кто что-нить написАл) из статьи я понял (кажется), что если параметр IdShread = 0, то возвращается раскладка активного окна... А как и в какой части кода можно внести этот параметр?
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275070
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275135
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke,

Уже натыкался на эту статью. тоже говорится, что BelowZeroесли параметр IdShread = 0, то возвращается раскладка активного окна но BelowZeroкак и в какой части кода можно внести этот параметр?
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275188
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

ThreadLayout = GetKeyboardLayout(0)
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275307
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String)
Dim hAppWnd As Long
Dim ThreadID As Long
Dim ThreadLayout As Long
Dim vbNullString
hAppWnd = FindWindow(vbNullString, "Безымянный - Блокнот")
If hAppWnd = 0 Then
MsgBox "нет такого окна"
Else
ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal 0&)
ThreadLayout = GetKeyboardLayout(ThreadID)
MsgBox "Ðàñêëàäêà " & Hex(ThreadLayout)
End If
этот код вроде должен определять раскладку в блокноте, но 1) ругается на vbNullString: Invalid Outside Procedure
2) нужно определять раскладку не определённого окна по имени, а любого активного в данный момент окна
3) совсем запутался с этим IdShread...
Буду благодарен за помощь
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275310
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroInvalid Outside Procedure
Перевести?
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275312
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

привет!) т.е. Здравствуйте. вы сильно помогли в предыдущих моих трудностях. Очень рад, что вы подключились к этой теме. Shocker.ProПеревести? да, пожалуйста...
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275318
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroпривет!) т.е. Здравствуйте. вы сильно помогли в предыдущих моих трудностях. Очень рад, что вы подключились к этой теме.
В эту вникать лень, тем более, вроде все разжевано, да и тема эта уже была ранее, поищи

BelowZero Shocker.ProПеревести? да, пожалуйста...
"Неверно [использовать] вне процедуры"
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275321
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
BelowZeroподскажите, как определить раскладку АКТИВНОГО окна
В инете обсуждается, как узнать раскладку самого окна(текущего процесса)
последний приведённый код узнаёт раскладку по имени приложения. тоже неплохо, но и это не работает...
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275329
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мне подсказывает, что активное окно можно найти с помощью GetActiveWindow
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275332
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извините за нубство, но куда GetActiveWindow пихнуть?)
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37275337
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroизвините за нубство, но куда GetActiveWindow пихнуть?)
ну напрягись немножко. Если вместо ПоискаОкна ты хочешь ПолучитьАктивноеОкно....
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37277293
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Option Explicit
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long


Private Sub Timer1_Timer()
Dim hAppWnd As Long
Dim ThreadID As Long
Dim ThreadLayout As Long
Dim vbNullString
hAppWnd = GetActiveWindow()
ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal 0&)
ThreadLayout = GetKeyboardLayout(ThreadID)
Text1.Text = "raskladka " & Hex(ThreadLayout)
End Sub
воть... не возвращает раскладку активного окна... но зато единственный возможный вариант на который компилятор не ругался красиво подобранным комплектом английских слов) а если серьёзно куда его впихнуть чтоб работало?
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37277487
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа помогите буду до часа ночи ждать ответа...
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37277610
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZero,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)
'Private Declare Function GetActiveWindow Lib "user32" () As Long ' <-- активное окно очереди сообщений _вызывающего_потока_
Private Declare Function GetForegroundWindow& Lib "user32" () ' <-- "самое верхнее" окно _рабочего_стола_. Вернет 0, если рабочий стол заблокирован


Private Sub Timer1_Timer()
Dim hAppWnd As Long
Dim ThreadID As Long
Dim ThreadLayout As Long
Dim vbNullString
'hAppWnd = GetActiveWindow()
hAppWnd = GetForegroundWindow()
ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal  0 &)
ThreadLayout = GetKeyboardLayout(ThreadID)
Text1.Text = "raskladka " & Hex(ThreadLayout)
End Sub
...
Рейтинг: 0 / 0
узнать раскладку клавиатуры
    #37277647
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,
с функцией GetActiveWindow не получается, а GetForegroundWindow& работает идеально, так, как и задумывалось. огромное спасибо!)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать раскладку клавиатуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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