2019年02月11日

スタートメニューで起動するアプリを自動化する



個人的な好みから言えば、インストーラがなくて、ただフォルダにコピーするだけのアプリが好みなのです。
しかし、最近の殆どのアプリはインストーラがついていて、環境を勝手に判断してインストールがされるようです。自分で作った AutoHotKey や UWSC などの自動化ツールのスクリプトでそのアプリを起動させようとすると、そのアプリの実行ファイルのありかを調べて、パスを書かないとちゃんと起動させられません。

ところが、ときどき環境やバージョンによってインストール先が変わったりする場合があります。Windows7 と Windows10 を併用していると特に。


ということで、スタートメニューからアプリを起動させるように一般的なサブルーチンを作りました。

なるべく手間が少なくアプリを起動させたいという方には役に立つかもしれませんのでご紹介します。

■AutoHotKey でスタートメニューを操作する


以下がそのプログラム。


★〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;●スタートメニューからアプリを起動する
; すでに起動していればそのアプリに切り替える
; すでにそのアプリがアクティブなら、次のウインドウに切り替える
StartApplication(appn, cmd)
{
WaitConvKeys() ; Winキーを押す前にコンビネーションキーを離す
if !WinExist(appn) {
; アプリが起動していないときには新規起動
if InStr(cmd, "\") > 0 {
run %cmd% ; パスが書いてあれば run で起動する
} else {
BlockInput on
Send, {LWin}
Sleep, 200
Send, %cmd%
Sleep, 300
Send, {Enter}
BlockInput off
}
WinWait, %appn%,, 10 ; ウインドウ起動待ち
} else {
; すでに起動しているときには前面切り替え
; さらにすでに前面(アクティブ)であれば次のウインドウに切り替え
WinGetTitle, name, A ;
WinActivate, %appn% ; アクティブにして
WinGetTitle, name2, A
if (name eq name2) { ; 名前が同じなら
WinGetClass, name, A ; class名を取り込んで
WinActivateBottom, ahk_class %name% ; 次のウインドウに切り替える
}
}
BlockInput on
WinActivate, %appn% ; アクティブにして
Send, #+{up} ; 縦最大化
BlockInput off
}
;●修飾キーが離されるまで待つ
; 実用上問題は発見できていないが、これを実行するとキーが離されるまで
; フォーカスが AutoHotKey に移る(吹き出し)
WaitConvKeys()
{
Tooltip, "Wait convination key(ALT/CTRL/Shift/変換/無変換) Key OFF ..."
KeyWait, Alt
KeyWait, Ctrl
KeyWait, Shift
KeyWait, vk1Dsc07B
KeyWait, vk1Csc079
Tooltip
}
―――――――――――――――――――――★


◆このプログラムのポイント


このプログラムは、第1パラメータでそのアプリがすでに起動しているかどうかを確認する文字列、第2パラメータで起動するためのスタートメニューに入れる文字列を指定します。

すでに起動しているときには、そのアプリをアクティブにします。さらにすでにアクティブであれば、そのアプリの別のウインドウをアクティブにします。

まだ起動していないときには、スタートメニューに第2パラメータの文字列を突っ込んで、その検索結果の最初に表示されるアイテムを起動します。

ま、実際に [WINキー] を一度押して、そのあと起動したいアプリ名をタイプしてみてください。たとえば、[WIN] を一度押して、そのあと internet って入力すると、インターネットエクスプローラーがリストの先頭に表示されるはず。で、リターンキーを押せばインターネットエクスプローラーが立ち上がります。

このプログラムはそれをシミュレートしているだけ。

これを使えば、いちいちマウスに持ち替えて、スタートボタンを押してアプリを探さなくても、簡単にアプリ起動ができます。

同じことは、タスクバーにアプリを「常に表示する」にしていれば、WIN+数字 でできます(過去記事でも紹介しました)。

…が、最近、その固定しているアプリが増えて、7つになってしまったので、それ以外のアプリを操作するのに WIN+数字 が使えなくなった(10個以上は対応できない)ので、これを拡張して、AutoHotKeyでシミュレーションようとしたのが事の発端。

●よく使うアプリに番号を割り当てる
私は AutoHotKeyで [無変換]+[数字キー] にいろんなアプリを立ち上げるようにしています。

vk1Dsc07B & 1:: StartApplication("- Outlook", "outlook")
vk1Dsc07B & 2:: StartApplication("ahk_class CabinetWClass", "C:\_USR\JOB\Project")
vk1Dsc07B & 3:: StartApplication("- sakura", "サクラエディタ")
vk1Dsc07B & 4:: StartApplication("- Google Chrome", "Google Chrome")
vk1Dsc07B & 5:: StartApplication("- Internet Explorer", "Internet Explorer")
vk1Dsc07B & 6:: StartApplication("- OneNote", "onenote")
vk1Dsc07B & 7:: StartApplication("Google Keep", "Google Keep")
vk1Dsc07B & 8:: StartApplication("- Excel", "Excel")
vk1Dsc07B & 9:: StartApplication("NexusFile", "C:\_USR\Tools\Nexus\NexusFile.exe")

第2パラメータにパスを書いておけば、スタートメニューは使わずに直接起動します。

■プログラムの説明


ちょっと以下に使っている関数の説明など。
もし、修正したい方はご参考までにどうぞ。

●BlockInput
このコマンドは、ほかからの入力を受け付けなくするためのコマンドです。
ある程度遅延がある処理をする場合、その間にユーザがキーボードやマウスを操作してしまうと、こうしたオートパイロットシステムは正しく動きません。なので、こうしてユーザ入力を無視させるような処理が必要になります。

ちなみに、UWSC では LOCKHARD というコマンドで実行します。

●WinActivateBottom
これは、ウインドウクラスが同じもの(要は同じアプリの別のウインドウ)の順番を入れ替える処理です。
UWSCではこれを実装するのは難しいのですが、AutoHotKeyならこのコマンド一発。。

たとえば、エディタで、A.txt、B.txtを開いているときに、A.txt がアクティブであれば、B.txtに切り替えを行います。

ここの処理は、WIN+数字 とほぼ同じです。

●WaitConvKeys
基本的にAutoHotKeyでは、Send コマンドは現在の修飾キー(何かと同時に押すキー)は無視して、そのキーコードを発生させます。ただし、いくつかのアプリでは、あとで修飾キーの状態を見て動きを変える場合があるので、修飾キーが離されるまで、メッセージを出して待機するようにしています。

●Send, #+{up}
知っている人は多いと思いますが、WindowsではWIN+Shift+↑ キーで、ウインドウが縦最大になります。
マウスでやると、タイトルバーを掴んで画面の一番上に持っていくと同じ動作をしますね。

好みの問題なのですが、宙ぶらりんのウインドウ表示よりも私はこの表示のほうが好みなので。なんとなく画面が空いているともったいないような気がするので。


◆このテーマのおすすめ図書


疲れないパソコン仕事術多忙な毎日をちょっとラクにする90TIPS

仕事に役立つExcelビジネスデータ分析第4版

パソコン仕事最速時短術115そのやり方、9割がムダ!

星ダイアリー2018山羊座

テンプレート仕事術―日常業務の75%を自動化する

仕事に使えるExcel関数ブック2016/2013/2010/2007対応

■同じテーマの記事

メールの自動受信はオフにしておきなさい

私はある作業をしていても、他のことがつい気になってしまうタチです。それで、デスクトップ付箋 など、集中力を削がない方法をいろいろ考えてます。PCのポップアップを停止する集中力を削ぐひとつの要因が、PCでのいろいろな通知。・さんからメールが届きましたよ・さんがあなたに IM を送っています・さんがラインで音声通信を要求しています・××の時間です!まぁ、いろいろうるさいこと。こういうのを止めるだけで..

コマンドプロンプトを使う

前回の記事、>の続きで、「コマンドプロンプトを便利に使う」方法のご紹介ただし、前回同様、たかがブログ記事ごときで体系的に使い方が理解できるものではありません。やっぱり整理した本を読むのが一番です。Web上でもいろいろ便利な紹介サイトがありますが、やっぱり情報が偏ってしまいます。ちょっとしたリファレンスには便利ですが、初めて取り組むなら全体をちゃんと説明した本を買いましょう。「生兵法は怪我の元」になりかねませんので。コマンドプロンプトを使うコマンドプロ..

CUI(キャラクタユーザインタフェース)を使うと効率が上がる

パソコン(Windows)を操作する方法として、・GUIグラフィカルユーザインタフェース・CUIキャラクタユーザインタフェース と言われる2種類の方法があります。別の記事キーボードでWindowsを制御する考える速度でパソコンに書くで書いたように、マウスを使うGUIよりキーボードで入力するCUIのほうが劇的に操作速度が早くなります。Windowsをキーボードショートカットで使うことはもちろん、アプリを立ち上げるにしても、「スタート」→「すべて..

Excelで入力ミスを減らして効率化する方法

Excelでデータを入力するというのはよくやる仕事。一つひとつのセルに、細かなデータを大量に入力するのは手間が掛かるしミスも起きます。入力方法をひと工夫すれば、仕事が早く終わること請け合い。本日はそんなちょっとした工夫のご紹介。入力を始めるのではなくフォーマットを作るたいていの人は、Excel でいくつも乗せるにデータを入力するとき、データの打ち込みか始めます。で、数字を入力しようとしたら日本語入力が ON になっていた、日本語入力をしようとしたら直接入..

昇進申告書はアウトラインが重要

そろそろ今年度の昇進・昇格の季節ですね。ウチの会社では、6月に昇進・昇格対象者が決まり、6月中に昇進申告書と推薦書を人事に提出して、7月から8月にかけて面接試験、9月末に結果発表と進みます。私の部下にも対象者がいるので(いない年があるほうが珍しいですが)、昇進申告書の添削に結構気を使ったりしてます。5段階レポート作成術何かレポートを作ったり、プレゼン資料を作ったり、はたまた昇進申告書を作ったりするときに、意識している作り方があります。・テーマを決める..

使えるフォルダを選択的に表示する方法

エクスプローラで特定のフォルダをすばやく開くには、エクスプローラが最初に開く場所にショートカットを置いておけば、エクスプローラを開くショートカットをクリックするでいけちゃいます。ただし、環境によって開くフォルダを変更するには、人間がその環境を判断して、異なるショートカットを選択してやらないとできません。その都度「え〜っと今は××の環境だから…」と考えるのはストレス。今の環境くらいわかるんだから、そのくらい自動的に処理してほしいものです。いつものフォル..

posted by 管理人 at 13:16| Comment(0) | PCアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: