« 同じなのに、違う名前 | トップページ | コンテキストメニューの並び »

2021年12月 1日 (水)

乗っ取り

一応、晴れではあったけれど、風が強めで、気温は低くなった。

 

Alt+Tabは、現在開いているソフトウェアの表示切替をする時に使うホットキー。

これを「乗っ取る」ことが出来ないか、と色々と探してみたけれど、見つけきれなかった。

Alt-Tab Terminatorや、過去、タスクスイッチャーで、Alt+Tabを置き換えしているソフトウェアがあるし、あったから出来るとは思うんだけれど、一般的なやり方では出来ない?!

Alt+Tabを無効にするやり方は見つかったけれど、それだと乗っ取りは出来ず、本当に無効状態になってしまう。

色々と探した結果、

Trap when Alt+Tab is pressed in a WPF Application

というところで、乗っ取りではないけれど、Alt+Tabに反応して、何らかの動作を実現する方法を見つけることが出来た。
C#のものを、VB.NETに翻訳して使ってみた。

これをやると確かに、Alt+Tabに反応して、自作のプログラムを反応させることが出来る。

ただ、Windows 10の場合は、Alt+Tabをすると、ウインドウのプレビューが表示され、やりたい動作が阻害されてしまう。

他に方法はないかと探していたら、以前のAlt+Tabの表示に戻したらどうなるだろう?と思ってやってみた。

Windowsスマートチューニング(358) Win 10編: 以前のタスクスイッチャーに戻す | マイナビニュース

おお!自作プログラムが前面に出るようになった!

上記のTrapの

If isAltKeyDown AndAlso hookStruct.KeyCode = tabKey Then
'Do stuff when Alt+Tab is pressed
Form名.Activate()
Form名.SleepM(150)
Form名.BringToFront()
Else

ところをこういう感じにした。上記は、VB.NETだけれど。

SleepMというのは、独自の関数で、

Public Sub SleepM(ByVal mSec As Long)
Dim i As Long
For i = 0 To mSec - 1 Step 100
Sleep(100)
System.Windows.Forms.Application.DoEvents()
Next i
End Sub

というもの。

ネットにあったものを拝借。

自身のFormをActivateし、少し時間をおいてから、前面表示にする。
(普通に表示されるより、ワンテンポ遅れてしまうけれど、仕方ない。)

Alt+Tabをする時の動作を俊敏にすると、自作プログラムが前面に出てくれるようになる。
Alt+Tabを長めにすれば、Windows本来のタスクスイッチャーを機能させることが出来る。

余談だけれど、このアイコン表示のタスクスイッチャー、懐かしい!(笑)

とりあえず、これで、妥協的な動きをさせることが出来るようになったのでよしとしよう。

引き続き調べて、もっといいやり方があれば書いてみたい。

|

« 同じなのに、違う名前 | トップページ | コンテキストメニューの並び »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 同じなのに、違う名前 | トップページ | コンテキストメニューの並び »