StrokesPlusで非アクティブウィンドウへマウスジェスチャーを送る方法

「StrokesPlus 非アクティブウィンドウ」で検索している方が多くいらっしゃるようです。

なのでこの記事では、フリーソフト「StrokesPlus」で非アクティブウィンドウをマウスジェスチャーで操作する方法を紹介します。

 

そのままでは非アクティブウィンドウを操作できない

例として、マウスジェスチャーによって、Ctrl + w キーを押したようにウィンドウを閉じる操作を実現します。

ウィンドウへ Ctrl + w キーを送るスクリプトは↓になります。

L字(↓→)で Ctrl + w を送ってウィンドウを閉じる設定の例

しかしこの命令は、現在アクティブ(≒最前面)なウィンドウにキーが送られる仕様になっています。

マウスジェスチャーをした場所のウィンドウが非アクティブな場合、そのウィンドウではなく、他のアクティブなウィンドウへキーが送られてしまうことになり、意図した動作にならない場合があります。

では、非アクティブなウィンドウでも、そこへキーを送って操作するには、どうすればよいでしょうか?

※補足:
アプリを閉じる関数なら「acCloseApplication(hwndTarget, x, y)」がありますが、これだとそのプロセスで開いているウィンドウが全て閉じられてしまうところが Ctrl + w キーの動作と違います。

 

アクティブ化する

acSendKeysはアクティブウィンドウへキーが送られる仕様になっています。

であれば、まずマウスジェスチャーをした場所のウィンドウをアクティブ化し、その後に Ctrl + w キーを送るようにします。

ウィンドウをアクティブ化する関数は「acActivateWindow(nil, gsx, gsy, 0)」なので、↓のようなスクリプトにすればよいことになります。

アクティブ化してから Ctrl + w を送ってウィンドウを閉じる設定の例

これで、マウスジェスチャーをすると、非アクティブなウィンドウでもアクティブ化され、その直後に Ctrl + w キーが送られて閉じられる動作になります。

 

大域Luaの活用

上記の方法だと、キーを送るジェスチャーのスクリプトには全て、アクティブ化の関数「acActivateWindow(nil, gsx, gsy, 0)」を書く必要が生じます。

例えば、「Alt + F4 キーを送ってアプリを終了するアクション」や、
「Alt + ↑ キーを送って上の階層へ遷移するアクション」などでも
ウィンドウアクティブ化の関数が必要になります。

そこで、「大域Lua」を活用することで、この関数を省略できるようにします。

「大域Lua」タブの「function sp_before_action ~ end」の中に書くことで、全てのスクリプトの実行前に自動的に「acActivateWindow(nil, gsx, gsy, 0)」を実行させることができます。

「大域Lua」タブ(追記したスクリプトは選択箇所)

こうすることで、全てのマウスジェスチャーで、必ずウィンドウをアクティブ化させてからスクリプトが実行されるようになり、各アクションで「acActivateWindow(nil, gsx, gsy, 0)」を書く必要がなくなります。

※ちなみに、上で例に挙げたスクリプトを紹介しておきます。
「Alt + F4 キーを送ってアプリを終了する」: acSendKeys("%{F_4}")
「Alt + ↑ キーを送って上の階層へ遷移する」: acSendKeys("%{UP}")

ジェスチャー「↑」で Alt + ↑ キーを送って上の階層へ遷移させる設定の例

 

Excelがアクティブ化されない場合の対処

起動直後のExcelだと、「acActivateWindow(nil, gsx, gsy, 0)」でアクティブにならない場合があります。

その場合は、スクリプトの数字を0から2に変えるとアクティブ化できます。

ただし、2に変えることでExcel以外で動作に影響が出る可能性もあるので、Excelでアクティブ化できていれば、0のままにしておくのが良さそうです。

 

今回の紹介は以上です。

↓コメントはお気軽にどうぞ♪ ^^

 

“StrokesPlusで非アクティブウィンドウへマウスジェスチャーを送る方法” への2件の返信

  1. StrokeItからの乗り換えでこの問題に悩んでおりましたが解決しました。ありがとうございます。
    大域Luaの活用も盲点でした。非常に参考になりました。

    • コメントありがとうございます!m(_ _)m
      お役に立てて嬉しく思います!
      とても励みになります!

コメントを残す

メールアドレスが公開されることはありません。