Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать раскладку клавиатуры / 21 сообщений из 21, страница 1 из 1
22.05.2011, 10:53
    #37273107
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
подскажите, как определить раскладку АКТИВНОГО окна? в инете не мало таких тем, но все коды, которые нашёл, определяют раскладку окна программы, а не активного окна. Желательно любого активного окна, не зависимо от имени. заранее спс
...
Рейтинг: 0 / 0
22.05.2011, 11:36
    #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
22.05.2011, 22:02
    #37273559
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
мдя походу ни у кого никаких идей
...
Рейтинг: 0 / 0
23.05.2011, 15:07
    #37274585
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
неужели никаких идей... хоть делай снимок экрана и смотри "рус" или "en" там нарисовано) а если серьёзно за 2 дня 42 просмотра и ток мои комменты. полюбэ как-то можно узнать раскладку активного окна...
...
Рейтинг: 0 / 0
23.05.2011, 16:42
    #37274871
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
...
Рейтинг: 0 / 0
23.05.2011, 17:28
    #37275007
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
big-duke,

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

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

ThreadLayout = GetKeyboardLayout(0)
...
Рейтинг: 0 / 0
23.05.2011, 19:59
    #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
23.05.2011, 20:03
    #37275310
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
BelowZeroInvalid Outside Procedure
Перевести?
...
Рейтинг: 0 / 0
23.05.2011, 20:06
    #37275312
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
Shocker.Pro,

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

BelowZero Shocker.ProПеревести? да, пожалуйста...
"Неверно [использовать] вне процедуры"
...
Рейтинг: 0 / 0
23.05.2011, 20:13
    #37275321
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
Shocker.Pro,
BelowZeroподскажите, как определить раскладку АКТИВНОГО окна
В инете обсуждается, как узнать раскладку самого окна(текущего процесса)
последний приведённый код узнаёт раскладку по имени приложения. тоже неплохо, но и это не работает...
...
Рейтинг: 0 / 0
23.05.2011, 20:17
    #37275329
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
Что-то мне подсказывает, что активное окно можно найти с помощью GetActiveWindow
...
Рейтинг: 0 / 0
23.05.2011, 20:20
    #37275332
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
извините за нубство, но куда GetActiveWindow пихнуть?)
...
Рейтинг: 0 / 0
23.05.2011, 20:23
    #37275337
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
BelowZeroизвините за нубство, но куда GetActiveWindow пихнуть?)
ну напрягись немножко. Если вместо ПоискаОкна ты хочешь ПолучитьАктивноеОкно....
...
Рейтинг: 0 / 0
24.05.2011, 18:12
    #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
24.05.2011, 21:12
    #37277487
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
ааа помогите буду до часа ночи ждать ответа...
...
Рейтинг: 0 / 0
24.05.2011, 23:54
    #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
25.05.2011, 00:33
    #37277647
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать раскладку клавиатуры
скукотища,
с функцией GetActiveWindow не получается, а GetForegroundWindow& работает идеально, так, как и задумывалось. огромное спасибо!)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать раскладку клавиатуры / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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