Узнать язык раскладки клавиатуры
Необходимо получить информацию о текущем языке ввода данных с клавиатуры. Можно это как-нибудь организовать?
|
Цитата:
Цитата m0nkrus
получить информацию о текущем языке ввода данных с клавиатуры »
|
- у каждого окна/приложения может быть свой язык ввода;
- AFAIK CMD (без сторонних инструментов на API32/.NET) не имеет доступа к такой инфе
P.S. язык ввода Windows по умолчанию (нового окна) можно взять с реестра (HKCU\Keyboard Layout\Preload\1)
|
amel27, тогда уточню: язык ввода для активного окна.
|
Цитата:
Цитата m0nkrus
язык ввода для активного окна »
|
код батника, который компилирует требуемый EXE (требуется .NET):
Код:
@if not exist "%~n0.exe" (
for /f "delims=" %%a in ('dir/s/a-d/b/od "%windir%\Microsoft.NET\Framework\vbc.exe"') do @set "vbc=%%a"
(echo Imports System.Runtime.InteropServices
echo Module Test
echo ^<DllImport^("user32.dll",SetLastError:=True^)^> Public Function GetForegroundWindow^(^) As IntPtr
echo End Function
echo ^<DllImport^("user32.dll",SetLastError:=True^)^> Public Function GetWindowThreadProcessId^(ByVal hwnd As IntPtr,ByRef lpdwProcessId As Integer^) As Integer
echo End Function
echo Public Declare Function GetKeyboardLayout Lib "user32" ^(ByVal idThread As UInteger^) As IntPtr
echo Sub Main^(^)
echo Console.WriteLine^(GetKeyboardLayout^(GetWindowThreadProcessId^(GetForegroundWindow^(^),0^)^).ToString^("X"^)^)
echo End Sub
echo End Module)>"%~n0.tmp"
call "%%vbc%%" "%~n0.tmp" /out:"%~n0.exe">nul
del "%~n0.tmp")
P.S. проверено на XP/2003
|
а что этот exe должен делать?
выдает всегда 4190419
W7U
|
Цитата:
Цитата ferget
а что этот exe должен делать? »
|
выдавать кодировку активного в данный момент окна (4190419/4090409)
Код:
@echo off
:loop
test.exe
ping -n 3 127.0.0.1>Nul
goto:loop
|
а выловить alt+shift не выйдет?
|
Цитата:
Цитата ferget
выловить alt+shift не выйдет? »
|
- потребуется отловить ВСЕ нажатия;
- может быть ctrl+shift;
- AFAIK для установки хука (на чужое окно) потребуются админские права + отключение UAC
|
amel27, слишком сложно на мой взгляд. Ну да ладно...
Ставлю отметку о решении проблемы.
|
Цитата:
Цитата m0nkrus
слишком сложно на мой взгляд. »
|
проще только использовать сторонние CMD-утилиты, сходу не нашел
вероятно, проще написать... но это уже в другую ветку (программирование), либо AutoIT/AHK
|
Время: 02:11.
© OSzone.net 2001-