Переключение раскладки клавиатуры для избранных программ

Обсуждение программ nnCron и nnCron LITE

Переключение раскладки клавиатуры для избранных программ

Postby Dimsok » Wed, 07 Jun 2017, 07:38

Можно сделать автопереключение раскладки для определённых программ? Например, у меня стоит англ. по умолчанию, и чтобы при запуске ms word в этом приложении автоматически устанавливался русский.
Dimsok
 
Posts: 26
Joined: Sat, 28 May 2016, 16:37

Re: Переключение раскладки клавиатуры для избранных программ

Postby dothen » Thu, 08 Jun 2017, 04:00

Задача переключает язык в избранном окне только один раз при создании окна.
Code: Select all
#( TASK-SET-LNG-WIN-CREATEx32
\ Переключает только при создании окна, даже если оно неактивно, свернуто или скрыто.
 NoLog \ NoActive
WatchWinCreate: "*"

: WatchWinText ( -- a u ) vTask vtWIN-TITLE @ ASCIIZ> ;
: WatchWinHwnd ( -- hwnd ) vTask vtWIN-HANDLE @ ;
: SetLngWindow ( id -- ) 0 0x0050 WatchWinHwnd PostMessageA DROP ; \ WM_INPUTLANGCHANGEREQUEST=0x0050

Action:
    WatchWinText S" *WordPad" WC-COMPARE IF ENU SetLngWindow THEN
    WatchWinText S" *Microsoft Word" WC-COMPARE IF RUS SetLngWindow THEN
)#


Задача переключает язык в избранном окне при его активации.
Code: Select all
#( TASK-SET-LNG-WIN-ACTIVATEx32
\ Переключает каждый раз при активации окна.
 NoLog \ NoActive
 WatchWinActivate: "*"
Action:
    WatchWinText S" *.txt*Блокнот" WC-COMPARE IF RUS SetLngWindow THEN
    WatchWinText S" Безымянный*" WC-COMPARE IF ENU SetLngWindow THEN
    WatchWinText S" /.*\.(ini)|(tab)|(spf).*Блокнот/" RE-MATCH IF ENU SetLngWindow THEN
)#


Задача переключает язык в избранном окне при его активации. Хоткей служит для включения\выключения задачи но не языка.
Code: Select all
#( TASK-SET-LNG-WIN-ACTIVATEx32x64
\ Переключает каждый раз при активации окна.
\ NoActive
0 VALUE HandleWin
0 VALUE StartStop
: SetLngWin ( id -- ) 0 0x0050 HandleWin PostMessageA DROP ;
WatchHotKey: "^+=" \ Ctrl+Shift+=    Запустить\Завершить задачу.
Action:
    StartStop INVERT TO StartStop
    BEGIN 500 PAUSE StartStop WHILE
      HandleWin GetForegroundWindow DUP TO HandleWin <>
      IF
        256 PAD HandleWin GetWindowTextA DROP   \ 256 PAD HandleWin GetClassNameA DROP
\ Примеры
        PAD ASCIIZ> S" *nnCron console*" WC-COMPARE IF ENU SetLngWin THEN
        PAD ASCIIZ> S" /.*\.(ini)|(tab)|(spf).*Блокнот/" RE-MATCH IF ENU SetLngWin THEN
        CUR-TASK-NAME TYPE SPACE PAD ASCIIZ> TYPE CR
      THEN
    REPEAT
)#

Задача работает так же как WatchWinActivate: "*" и видит 64-битные и консольные окна.
Вместо смены языка можно делать все остальное.
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Переключение раскладки клавиатуры для избранных программ

Postby ANR Daemon » Mon, 25 Sep 2017, 01:03

Не проще поставить пунто или аналогичную переключалку?
Даже вопрос не в "проще", а в гораздо большей пользительности подобного подхода.
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest

cron