Страница: 1 |
Страница: 1 |
Вопрос: Как отследить раскладку активного приложения
Добавлено: 17.08.06 15:39
Автор вопроса: KEP
Как отследить раскладку клавиатуры в любом активном приложении?? Удается отследить только в самом приложении Visual Basicика.
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Sub Command1_Click()
Dim kNam As String
Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName
'409 - английский, 419 - русский
kNam = CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1)))
If kNam = "409" Then MsgBox "En"
If kNam = "419" Then MsgBox "Ru"
End Sub
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 18.08.06 12:29
Операционная система какая? Ибо есть нюансы.
Номер ответа: 2
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #2
Добавлено: 18.08.06 12:49
WinXP, и если можно об этих ньюансах расскажи чтоб их тоже учесть.
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 18.08.06 19:13
'Возвращает раскладку в указаном окне по hWnd
Dim sReturn As String, nRet As Long
Dim pID As Long, tId As Long, LCID As Long
tId = GetWindowThreadProcessId(hwnd, pID)
LCID = LoWord(GetKeyboardLayout(tId))
sReturn = String$(128, 0)
nRet = GetLocaleInfo(LCID, LOCALE_SENGLANGUAGE, sReturn, Len(sReturn))
If nRet > 0 Then GetLanguageInfo = Left$(sReturn, nRet - 1)
End Function
Private Function LoWord(DWORD As Long) As Integer
If DWORD And &H8000& Then
LoWord = &H8000 Or (DWORD And &H7FFF&
Else
LoWord = DWORD And &HFFFF&
End If
End Function
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 18.08.06 19:14
Private Const LOCALE_SENGLANGUAGE = &H1001
Номер ответа: 5
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #5
Добавлено: 18.08.06 19:25
Спасибо HACKER!!! Всегда в тему и посуществу. Но вот возникает следующий вопрос как программе получить hwnd активного окна. моя программа будет висеть в треи и должна записывать в ТекстБокс язык активного окна.
Номер ответа: 6
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #6
Добавлено: 18.08.06 21:02
Номер ответа: 7
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #7
Добавлено: 18.08.06 21:13
[OFFTOP]
ещё один кейлоггер?
Номер ответа: 8
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #8
Добавлено: 19.08.06 03:29
Всем большушие от души спасибо. Все рабатает.
Номер ответа: 9
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #9
Добавлено: 20.08.06 09:54
Да но уже намного лучше.