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

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

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

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

Можно сделать автопереключение раскладки для определённых программ? Например, у меня стоит англ. по умолчанию, и чтобы при запуске ms word в этом приложении автоматически устанавливался русский.
Dimsok
 
Posts: 28
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

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

Postby Dimsok » Thu, 12 Oct 2017, 23:35

Зачем оставлять бесполезные посты коли нечего по существу? Не проще, раз создал тему. То, как переключают переключалки мне не нрав, а ставить только ради этого... Лучше пользоваться одной программой для многих задач, коль nncron уже прижился, чем ставить лишние лишь для одной функции. Стоит key switcher лишь для отображения флагов, там такой возможности нет.
Dimsok
 
Posts: 28
Joined: Sat, 28 May 2016, 16:37


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 3 guests

cron