« いい感じの雲 | トップページ | オレンジ »

2021年11月14日 (日)

ウインドウを前面にする

雲多めの晴れ。

 

エクスプローラーを気軽に、希望するフォルダを開いた状態で一気に起動出来ないか?
また、既にそれが開いているなら、そのウインドウを前面にすることは出来ないか?と考えた。

Launchy: The Open Source Keystroke Launcherというランチャーを使わせてもらっているので、それ上でバッチファイルに引数を渡して起動させればいいと考えた。

ただ、調べてみると、バッチファイルだけでは、ウインドウの前面化は出来ないらしい。

VB Scriptでウインドウの前面化が実現できるそうだ。

そこで、バッチファイルで何を起動・前面化するかを受け取り、バッチファイルからそれを引数でVB Scriptで渡して前面化し、VB Scriptからの戻り値を見て、次の処理をする、という風にすることにした。

ファイル名は何でもいいけれど、exp.batとexp.vbsとする。

exp.bat

@echo off

setlocal enabledelayedexpansion

set arg=%1

cscript "フルパス\exp.vbs" !arg!
if %ERRORLEVEL% equ 0 (
goto :eof
)

set explorerexe=start "" explorer.exe
set para=fullpath

if !arg! == downloads (
set para="フルパス\Downloads"
) else if !arg! == Documents (
set para="フルパス\Documents"
) else (
set para="デフォルトのフォルダ名"
)

!explorerexe! !para!

endlocal

exp.vbs

Option Explicit

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

Dim return

If objWshShell.AppActivate(Wscript.Arguments(0)) Then
    return=0
else
    return=1
End if

Set objWshShell = Nothing

Wscript.Quit(return)

ウインドウの前面化をするために、ウインドウ・タイトルを使うこととする。

exp.batで、ウインドウ・タイトルの引数を受け取り、その引数をexp.vbsに渡す。

exp.vbsで、そのウインドウ・タイトルがあれば前面化し、なければ何もしない。
戻り値をそれぞれ設定し、それをexp.batに返す。

それを受け取ったexp.batは、前面化に成功したら処理は終了、前面化出来なかったら、その引数に設定したフォルダを起動する処理を実行する。

上記の例で言えば、「downloads」という引数を受け取ったら、「downloads」というウインドウ・タイトルがあれば、それを前面化、なければ、if分の中に書かれているフルパスのフォルダ名を「explorer.exe」に渡して、そのフォルダを起動する、という仕組み。

よく開くフォルダがあるなら、こういうのをif文でいくつも作っておけば、エクスプローラーを開いて、何度もクリックせずに、そのフォルダを一瞬で開くことが出来る。

ちなみに、exp.vbsの前面化は、ウインドウ・タイトルだけではなく、プロセスIDでも前面化出来る。
プロセスIDの方が間違いは少ないけれど、プロセスIDを探る処理を追加しないといけなくなるので、ちょっと面倒。

今回は、エクスプローラーを開くことが目的なので、これで十分。
エクスプローラーのウインドウ・タイトルは、現在開いているフォルダ名だけなので、とても簡単である。

ウインドウ・タイトルをピッタリ同じに出来るなら、他のソフトウェアを前面化、起動させることも可能。

他のソフトウェアだと、開いているファイル名とそのソフトウェア名という感じで、かなり長いものになるので、それを引数として渡すのは面倒。
その時は、バッチファイルの方で、一部の文字列があればそれでよし、という仕組みにするのが無難かな。

と、Launchyを使っているので、こういうことが出来るようになった。
(引数を受け取れるなら、他のランチャーでも可能。)

これで、エクスプローラーを開くのがとても楽になった。

|

« いい感じの雲 | トップページ | オレンジ »

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

コメント

コメントを書く



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




« いい感じの雲 | トップページ | オレンジ »