ExecSlct

最新版 05/30 2016
【概要】
今更ながらですが Windows Vista 7 8 と出て Vista から SendTo フォルダーの扱いが変わり XP 以前には 此の SendTo フォルダーに作成したフォルダーはスタートメニューのようにポップアップになり深い所に 追って行けたのに Vista 7 共に扱いが単なるフォルダーになってしまいました。
従って ポップアップも出ないし此のフォルダーを選択すると 此のフォルダー下に コピー 移動 ( 意味 ??? ) になってしまいます。
XP 以前の様に 関連付けされていない プログラムで開きたい時等の為に SendTo 送る 経由で行う為には SendTo フォルダー直下に多数の実行ファイルの ショートカットを作成しなければならすに見た目が 煩雑になってしまいます。
そこで SendTo フォルダー直下には 此の ExecSlct.EXE のショートカットだけを置き 実行ファイル は 設定ファイルに書いた物をメニューで選択出来る様にして これらの 実行ファイル に SendTo からの コマンドラインを渡す様にしたのがたのが ExecSlct です。
ただ それだけでは汎用性に欠けるので メニューでの立ち上げランチャーの機能も併設しました。
この辺の事は テクニカルインフォメーションと同じです。

【動作環境】
日本語 Windows 98 / 2000 / XP / Vista / 7 / 8 / 10 ランタイムは特に必要有りません。

【インストール/アンインストール方法】
適当なところに置いて下さい。そこから 本来的には ショートカットを SendTo フォルダーに作って下さい。
設定ファイル は 各ユーザーの Apprication Folder に ExecSlctMu.txt として作るので アンインストールは 上記のファイルを削除して下さい。レジストリーは使用しません。

【使用方法】
フォルダー ファイルを選択して 送るから SendTo フォルダーに作った ExecSlct の ショートカットを 選択して クリックして下さい。設定ファイルに記録した プログラムをメニューにして立ち上がります。
此を 選択すれば 此の プログラムに SendTo からの コマンドラインを送って立ち上げます。 ただし 最初に立ち上げた時は設定ファイルの記録が無いので メニュー編集のメニューしか出ません。 此を選択して 設定ファイルを編集して下さい。
設定ファイルの様式は以下の通りです。

@メニューのタイトル 無くても良い
立ち上げプログラムへのフルパス。
?副次的な コマンドライン 無くても良い

が ワンセット です。

立ち上げプログラムへのフルパス の代わりに 現存するフォルダーを指定すると SendTo からのコマンドライン ファイル( フォルダー ) を此の指定したフォルダーへのコピーの意味になりコピーを実施します。

例としましては

@ノートパッド
C:\WINDOWS\NOTEPAD.EXE
?C:\BOOTLOG.TXT
@ワードパッド
C:\Program Files\Windows NT\Accessories\wordpad.exe
@C-Windowにコピー
C:\Windows

上記は メニュー上では

ノートパッド
ワードパッド
C-Windowにコピー
------------
メニュー編集

となります。通常アイコンは立ち上げプログラムの持つ最初(順序数 0 )のアイコンを使用します。
先頭の文字が
@ メニューのタイトル 無ければ次のフルパスがタイトルになります。
? 副次的な コマンドライン。
?ADDC と入れると通常のコマンドラインの前に ?ADDC 後の文字を入れてコマンドラインとします。 従って此を入れると副次的な コマンドラインは無しで常に 後の文字 + コマンドライン になります。
- この位置にセパレーターを入れます。
! 次のメニューは Bar Break コラムが変わります。
>PopUp PopUp と言うタイトルで以下の記述を ポップアップメニューにします。
< ポップアップメニューの深さを一つ浅くします。
[2 立ち上げプログラムのアイコンの指定 プログラムの持つ 3番目(順序数 2) のアイコンを使用 [- 立ち上げプログラムのアイコンを使用しない指定 $2 アイコンを持つファイルの 3番目(順序数 2) のアイコンを使用 ・行頭の文字が ASC の 'A' 以上なら全て プログラムへのフルパス だと取ります。( 内容の吟味は有りません。)
従って行頭文字 が上記以外 で ASC の ';'より小さな文字は全て無視されて良く言えばコメントとなります。
此と同様に Shift JIS での全角の第一コードは マイナスなので全角もコメントとなります。
・行頭の Tab Space はいくつでもスキップします。ポップアップメニュー内容等のインデントに使用すると 分かりやすくなるかと思います。

・? の副次的な コマンドライン は ExecSlct への コマンドラインが無い時若しくは メニューを右クリックで 選択した時 又は /LNC の時に 此をコマンドラインとして プログラム を立ち上げます。
・/LNC の時に メニューを右クリックで選択するとプログラム はコマンドライン無しで立ち上がります。
・メニューを選択する時に無変換キーを押していると選択プログラム はコマンドライン無しで立ち上がります。

有るフォルダーの下の ショートカットを上記の様な型式のテキストにする ExecMenu を アップしていますからスタートメニュー項目等をランチャーとして使用する時には ExecMenu で基本を作り その後で編集すると楽だろうと思います。
同梱の ExecSysItem.txt は システムアイテムを出すメニューサンプルです此をメニュー用のテキストの中に 入れれば マイコンピューター 等がメニューに加わります。

【注意事項】
設定ファイル メニューでの プログラムへのフルパス部分は最初の文字が 'A' 以上有る事以外何の吟味も していません。( 極端な話 AAA でも 受付ます。)従って常にプログラムが立ち上がるとは限りません。
又 当然 コマンドライン と プログラム のミスマッチも出るかとも思います。( フォルダーを認めない プログラムにフォルダーを送ったとか テキストエディターに画像を送ったとか。) マッチングを取るのはひとえに送り手 ( オペレーター )です。

【コマンドライン】
本来的には ExecSlct へのコマンドライン は 選択プログラムへ直接渡すのですが ExecSlct をメニュー立ち上げ ランチャーとして使用する為に設定ファイルを切り替える為に
/LNC C:\.....\XXX.txt と 言う形も受け付けます。
此は XXX.txt ( 本質的には txt で無くても良いのですが ) を設定ファイルとして メニューを立ち上げます。
C:\.....\XXX.txt が .txt でない時には 各ユーザーの Apprication Folder に ExecSlctMu.txt を使用します。
この場合は /副次的な コマンドライン が常に有効となります。
此の様にすれば何種類かの 設定ファイル を使い分けられます。
/SMU C:\.....\XXX.txt は /LNC と同じ動作ですが メニュー編集を選ぶまで常駐して作動を続けます。 後から /SMU で立ち上がった物は 先に常駐している物が有る時には此にメニューを出させます。
/NIC メニューに各々のプログラムのアイコンを描画しません。アイコンの取得と描画が無い分だけメニューの 反応が早くなります。立ち上げ時の Shift キーとの排他的動作となります。

【キーの同時押し】
Shift:立ち上げ時に押されていると 各々のプログラムのアイコンを描画しません。
 コマンドライン /NIC と排他的な動作です。
Control:メニュー選択時に押されていると テキストクリップボードの内容をコマンドラインとして送ります。
無変換:メニュー選択時に押されていると送られた コマンドライン は無い物とします。副次的なコマンドラインが 有効になります。
Shift:メニューアイテムがハイライト( 背景が青い )の時に押されるとメニューテキストをテキストクリップボードに 代入します。
メニュー選択を 右クリック 左クリックで それぞれ違うプログラム( 合計 2個 )を立ち上げる事が出来ます。

【制限事項】
SendTo から使用する ExecSlct は設定ファイルを使い分けられません。
もし複数個 持ちたいのなら ExecSlct.exe の名前をExecSlct01.exe 等に 変えてそのショートカットをSendToに 置いて下さい。設定ファイル名もそれなりに変わるので複数を使い分けられます。 ( SendTo に直に置いても OK です。)
ただし同じ設定ファイルで内部のポップアップで対処した方が簡単で良いかと思います。
メニューアイテムの数 ポップアップメニューの深さの制限は プログラム的には有りません。

【使用に関して】
此の プログラムは バグ 動作不良などが無い事を期待されて作られてはいますが 違う環境での 正常動作 又 誤動作から来る損害など についての 保証はいたしかねます。
ただし ご意見 提案 動作不具合報告等は歓迎いたします。

【履歴】
2011/09/10 Ver 1.000
Windows Vista 7 での SendTo フォルダーの扱いが不便なので作成しました。
2011/10/05 Ver 1.100
各メニューアイテムのアイコン序数を指定できる [ と 他のアイコンを使用する $ を 追加しました。 アイコンの無い時の共通アイコンを無駄に作成してしまう事が無い様にしました。
2012/01/04 Ver 1.110
Additional Command Line 指定をする ?ADDC を入れました。
2013/09/15 Ver 1.200
指定コマンドを始める前に出来るだけ自分が立ち上がる前 常駐している直前の状態を再現してから始める 様にしました。各 メニューアイテムの動作項目にコマンドラインを入れないとメモリーアクセス違反が 起こってしまう事が有るのを修正しました。
2014/03/07 Ver 1.300
立ち上げプログラム の代わりに現存するフォルダーを指定すると SendTo からの コマンドラインファイル ( フォルダー ) を その指定フォルダーにコピーする機能を付けました。
2015/07/25 Ver 1.400
DPI の仮想化による スケーリングの影響でメニューの文字やアイコンが滲んで表示されてしまう事が無いように 内部的には スケーリングに対応している事を 宣言する事で OS のスケーリングの影響を受けない様にしました。
他のプログラムを立ち上げる所をより多様な立ち上がりの仕方に対応出来る様にし コマンドラインモードと /LNC ランチモードの区別をはっきりさせてランチモードの時には 右 左 クリックで二つのプログラムを 立ち上げられる様にしました。
スタートメニュー代わりにも使用出来る様に スタートメニューから ExecSlct のメニュー用のテキストを 作る 補助プログラム ExecMenu をアップしました。
この為 多数のメニューがを扱う機会が増える事を考えて全てのメニューやアイコンを取得してから作成して表示するの はやめて 必要に応じてサブメニューをその都度作成する事にして大幅に最初の立ち上げスピードアップをしています。
2015/09/10 Ver 1.420
常駐するオプション /SMU を加え /SMU /LNC の位置も 何処でも認める様にしました。
メニュー設定ファイルは *.txt だけでなく どんな物でも 認める事にして 送られて来る コマンドラインの 解析の柔軟性を上げました。
2015/12/10 Ver 1.500
ExecSlct.exe の立ち上げられ方によっては 他からのメッセージを受け付けなくなってしまう事を無くし /SMU だけでなく送るに使用する方でも アイコン取得の無駄を無くす為に常駐する様にし 送るの方も 右クリック 左クリック で同時に 2アイテム起動出来る様にしました。
ExecSlct.exe が 立ち上がる時の Shift キーの /LNC 切替 をやめ アイコン無しメニューの切替にしました。
選択する時に Conerol キーを押していると テキストクリップボードをデータを選択された プログラムへの コマンドラインにする事に変え スタートメニュー型の使用においてもコマンドラインを柔軟に指定出来る 様にました。
アイコン描画の為に 各プログラムからアイコンを取得する手間とメニュー速度を速くする コマンドライン オプション /NIC 立ち上げ時の Shift キーを新設しました。
後 メニューがハイライト( 背景が青い )の時に Shift キーを押すとそのメニューテキストをクリップボードに 代入します。メニュー編集の位置検索に利用して下さい。
2016/02/04 Ver 1.510
新たなプログラムを立ち上げた時にそのプロセスが取得出来た時には十分に待てる様に プロセスが取得出来ない 時でも有る程度は待つ様にしました。又 プロセスを立ち上げる時に余分なリソースをリクエストしない ようににしました。
2016/05/30 Ver 1.520
アイコンは シェルの確保しているアイコンキャッシュに 有る物は此処から取得する様にして 無駄を無くし 多少なりともメニュー表示のスピードをアップしました。又 アイコンのサイズもシステムメニューと同じに なる様にして描画の無駄がでない様にしました。
COM 使用準備はスレッドで行う事にして 不足 重複の無い様にしました。他のプログラムを立ち上げる時の 安全性と汎用性を高めました。

 最新版 05/30 2016 Ver 1.520 Size 11 kb ExecSlct のダウンロード
−戻る−
【 ExecMenu 】
ExecSlct は /LNC メニュー指定ファイル でメニューファイルを送ればメニュー型ランチャーとしても軽快に動作します。 ただし メニューを指定するテキストを ExecSlct 用に編集するのは数が多くなると結構大変な作業となってしまい ExecSlct を ランチャーとして使用するハードルを 高くしてしまっています。
そんな事で 有るフォルダー以下の ショートカットを読み込んで此の内容を全て ExecSlct のメニュー型式に してしまうのが ExecMenu です。
最初に 指定フォルダーとして 個人用のスタートメニューフォルダー Common スタートメニューフォルダー 個人デスクトップフォルダー Common デスクトップフォルダーを入れてありますから とりあえず此の 四つあれば ExecSlct にスタートメニュー代わりをさせる事や デスクトップ アイテムのメニュー型ランチャーとしてすぐに 使用出来る様になると思います。
ExecMenu が作成する ExecStrt.txt は単なるテキストファイルですから切り貼り 削除 追加 は自由でかなりの メニューカスタマイズも可能です。

【履歴】
2015/07/15 Ver 1.000
ExecSlct.exe をスタートメニュー代わりに使用出来るように 作成しました。
2016/05/30 Ver 1.100
プログラムで 使う COM はスレッドで宣言準備する事で忘れを無くし二重に宣言してしまう事の無駄を無くしました。
出力先フォルダーも指定出来る様にし Search のスタートは コマンドライン /S にしました。

  最新版 05/30 2016 Ver 1.100 Size 15 kb ExecMenu のダウンロード
−戻る−