Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать язык раскладки клавиатуры

Ответить
Настройки темы
CMD/BAT - [решено] Узнать язык раскладки клавиатуры

Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


Необходимо получить информацию о текущем языке ввода данных с клавиатуры. Можно это как-нибудь организовать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:38, 26-07-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата m0nkrus:
получить информацию о текущем языке ввода данных с клавиатуры »
- у каждого окна/приложения может быть свой язык ввода;
- AFAIK CMD (без сторонних инструментов на API32/.NET) не имеет доступа к такой инфе

P.S. язык ввода Windows по умолчанию (нового окна) можно взять с реестра (HKCU\Keyboard Layout\Preload\1)
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:17, 27-07-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


amel27, тогда уточню: язык ввода для активного окна.

Отправлено: 09:25, 27-07-2011 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:11, 27-07-2011 | #4


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


а что этот exe должен делать?
выдает всегда 4190419
W7U

Отправлено: 12:51, 27-07-2011 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата ferget:
а что этот exe должен делать? »
выдавать кодировку активного в данный момент окна (4190419/4090409)
Код: Выделить весь код
@echo off
:loop
test.exe
ping -n 3 127.0.0.1>Nul
goto:loop

Отправлено: 12:55, 27-07-2011 | #6


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


а выловить alt+shift не выйдет?

Отправлено: 13:01, 27-07-2011 | #7


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата ferget:
выловить alt+shift не выйдет? »
- потребуется отловить ВСЕ нажатия;
- может быть ctrl+shift;
- AFAIK для установки хука (на чужое окно) потребуются админские права + отключение UAC

Отправлено: 16:16, 27-07-2011 | #8


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


amel27, слишком сложно на мой взгляд. Ну да ладно...
Ставлю отметку о решении проблемы.

Отправлено: 16:17, 27-07-2011 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата m0nkrus:
слишком сложно на мой взгляд. »
проще только использовать сторонние CMD-утилиты, сходу не нашел
вероятно, проще написать... но это уже в другую ветку (программирование), либо AutoIT/AHK
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:22, 27-07-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать язык раскладки клавиатуры

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Debian/Ubuntu - [решено] Отображение раскладки клавиатуры Simpler Общий по Linux 0 18-11-2010 11:09
Разное - Проблема с переключением раскладки клавиатуры JJKey Microsoft Windows 2000/XP 27 08-12-2008 21:02
[решено] переключение раскладки клавиатуры Sergey Ugryumov Microsoft Windows NT/2000/2003 5 16-10-2007 12:25
Редактирование раскладки клавиатуры ARB Общий по Linux 8 23-10-2004 12:55
[решено] Язык раскладки клавиатуры (при входе в систему и в сеансе) Bozo Microsoft Windows NT/2000/2003 16 07-10-2004 01:36




 
Переход