ExecSlct

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

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

【インストール/アンインストール方法】
適当なところに置いて下さい。そこから 本来的には ショートカットを SendTo フォルダーに作って下さい。
設定ファイル は 各ユーザーの Apprication Folder に ExecSlctMu.txt として作るので アンインストールは 上記のファイルを削除して下さい。レジストリーは使用しません。
ExecSlct.inf からインストールすれば エクスプローラーの右クリックコンテキストメニュー に アイコンと 共に ExecSlct が現れます。此を選択する事で 同じ事が出来る様になります。( SendTo からとは 若干違います。)
此の時の アンインストールは コントロール パネル プログラムと機能 から ( ExecSlct ( Remove ) を選択して下さい。

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

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

が ワンセット です。

立ち上げプログラムへのフルパス の代わりに 現存するフォルダーを指定すると コマンドライン ファイル( フォルダー ) を此の指定したフォルダーへのコピーの意味になり エクスプローラーでのコピー API を使用してコピーを実施し その後 コピー先のフォルダーをコピーアイテムを選択して開けます。

例としましては

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

上記は メニュー上では

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

となります。通常アイコンは立ち上げプログラムの持つ最初(順序数 0 )のアイコンを使用します。
先頭の文字が
@ メニューのタイトル 無ければ次のフルパスがタイトルになります。
? 副次的な コマンドライン。
?ADDCxxx %1 yyy ( xxx%1yyy でも良い) と入れると ?ADDC 後の文字列 xxx %1 yyy中の %1 の位置に 通常の送られたコマンドラインを入れて( xxx フォルダー名 or ファイル名 yyy ) でコマンドラインとします。
?ADDCxxx yyy の様に %1 が無い時には xxx yyy コマンドライン と最後に付加します。
従って此を入れると副次的な コマンドラインは無しで常に 後の文字 + コマンドライン になります。
- この位置にセパレーターを入れます。
! 次のメニューは 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 でも 受付ます。)従って常にプログラムが立ち上がるとは限りません。
又 当然 コマンドライン と プログラム のミスマッチも出るかとも思います。( フォルダーを認めない プログラムにフォルダーを送ったとか テキストエディターに画像を送ったとか。) マッチングを取るのはひとえに送り手 ( オペレーター )です。
・エクスプローラーの右クリックコンテキストメニュー と SendTo フォルダーに作った ExecSlct の ショートカット 経由では 若干 送られる物が異なります。 エクスプローラーの右クリックコンテキストメニュー では 送られる アイテムは常に1つですが SendTo では 選択されているアイテム 全てが 送られてきます。
*.lnk ( ショートカット ) は エクスプローラーの右クリックコンテキストメニューでは *.lnk を解釈して Link 先を送ってきますが SendTo では *.lnk そのものを送ってきます。

【コマンドライン】
本来的には 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 キーとの排他的動作となります。
/STY 常駐していない時には 常駐して メニューとアイコンの用意をしておきます。常駐している物が有る時に は何もしません。( スタートアップ用途です。/LNC の有る時は 無効です。)
/CBT クリップボードテキストを 選択した物に コマンドパラメーターにして立ち上げます。

【キーの同時押し】
・立ち上げの時
Shift:立ち上げ時に押されていると 各々のプログラムのアイコンを描画しません。
 コマンドライン /NIC と排他的な動作です。
Control:立ち上げ時に押されていると コマンドライン /CBT と排他的なトグル動作になり /CBT が無い時には クリップボードテキストを 選択した物に コマンドパラメーターにして立ち上げます。
Control + Shift:立ち上げ時に同時に押されていると 常駐している物が有る時には 此を終了させます。
 常駐している物が無い時には何もしません。
・メニュー選択時の時
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 使用準備はスレッドで行う事にして 不足 重複の無い様にしました。他のプログラムを立ち上げる時の 安全性と汎用性を高めました。
2017/07/25 Ver 1.540
アイコン付きのメニューでもポップアップした後ならそのメニューの最初の文字による アクセラレーション キー としてのキー入力によりメニューを選択出来る様にしました。
此によりメニュータイトルの最初の文字を意識して使い分ける事により キー入力により即指定出来る様になりました。
2018/04/05 Ver 1.560
各メニューのアイコンを取得するのを 通常通りに 各ポップアップでのオンデマンドで 取得するのと平行して  プログラム立ち上げ時に アイコンを取得するだけの 別スレッドでも取得する様にして サブメニュー以下の アイコン描画時は アイコンを取得による遅れはほぼ無くなり殆ど引っかかりとか 違和感を無くしました。
メモリーバッファの使用方法を変えて効率よく重複の可能性のない物にしました。
2018/07/15 Ver 1.580
API コールの戻り値 判断を修正して正しくしました。
2019/07/25 Ver 1.600
個人用のテーマでアイコン文字やアイコンのサイズを変えているとメニューサイズと アイコンサイズが ずれてしまう事を修正し 常にシステムメニューと同様なメニューが出る様にしました。
2020/04/20 Ver 1.620
ポップアップメニューのアイテムの右クリックでそのメニューのテキストをクリップボードに代入する様にしました。
右クリックで選択した時に 動いてしまい二重に反応してしまう事を無くしました。
2020/09/15 Ver 1.700
ExecSlct 自身は IME を使用しないので IME 不要宣言をして常駐量を大幅に減らしました。
常駐量が減ったので スタートアップ用途の 常駐するだけのオプション /STY を新設しました。
2021/11/30 Ver 1.800
送られた コマンドライン でなく テキストクリップボードをパラメーターとして渡す /CBT を 新設 して 送る からだけでない使用方法に対応しました。
Shift キーで メニューストリングを取得して クリップボードにコピーする用途は メニュー編集 の時しか 用がないので メニュー編集 が選択しない時には無視する事にして 不必要な クリップボード 挿入は やめました。
メニューのアクセスキーで決定させられた時に余分なキー出力をなるべく残さない様にしました。
2022/03/01 Ver 1.820
Additional コマンド SW 指定 ?ADDC を加えた後に 此のコマンド SW と本来の 送るからの コマンドライン の間に スペースが無く プログラムによっては コマンドラインが解析出来ない事がでてしまう事が有るのを修正し 本来の 送るからの コマンドライン ( フォルダー名 ファイル名 ) の %1 の間の Space は有っても無くても xxx コマンド ライン yyy となる様にしました。
2022/06/05 Ver 1.840
常駐解除の簡略化のため 立ち上げの時に Control キーを押していると 常駐している物が有る時には此を 終了させる動作を入れました。
2022/12/20 Ver 1.900
エクスプローラーの右クリックコンテキストメニューにもアイコン付きで出せる様に ExecSlct.inf を 同梱しました。 此の為 ExecSlct.exe は同時に複数のアイテムが送られた時のガードを固めました。
アイテムに フォルダー名を書いた時の扱いをはっきりさせて アイコンもよく解る様な物に変えました。
フォルダー指定でのコピーでは コピーを実施し その後 コピー先のフォルダーをコピーアイテムを選択して 開ける様にしました。
2023/07/30 Ver 1.920
コマンドラインを取得する所を統一して若干効率を良くし 値の再確認も入れて 安全性を高めました。
同梱ファイル ( ExecSlct.txt ) の サポート情報を最新の物に変えました。
2024/01/20 Ver 2.000
エクスプローラーの右クリックコンテキストメニュー からの複数のアイテムが送られた時のガードをより強固にして 動作の安全性を高めました。
複数の ファイル フォルダーが選択されて 右クリックコンテキストメニュー から ExecSlct.exe が二重に起動されて 処理できない時には 必ず警告音を鳴らして一部は処理できていない事を示す様にしました。
立ち上げ時の 同時キー押しは 自分自身を終了させるのは Control + Shift にして Control はコマンドライン /CBT と の排他的なトグル動作にしました。
立ち上げ時の Shift キーが メニューの文字列取得と重なっていて テキストクリップボードのデータを書き換えて しまうのをキー待ちを確実にする事でなくしました。
2024/04/15 Ver 2.020
受け取る送る コマンドラインは 各々のプログラムによって違い ExecSlct.inf ファイルの作りが悪く 送るファイルに Space が 有ると認識出来なくなる物が有ったので 此を修正した物を 同梱しました。
ExecSlct.exe と ExecSlct.inf を以前と同じ所において ExecSlct.inf のコンテキストメニューのインストールで上書きして下さい。 (アンインストール作業は要りません。)

 最新版 04/15 2024 Ver 2.020 Size 15 kb ExecSlct のダウンロード
−戻る−

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

【履歴】
2015/07/15 Ver 1.000
ExecSlct.exe をスタートメニュー代わりに使用出来るように 作成しました。
2016/05/30 Ver 1.100
プログラムで 使う COM はスレッドで宣言準備する事で忘れを無くし二重に宣言してしまう事の無駄を無くしました。
出力先フォルダーも指定出来る様にし Search のスタートは コマンドライン /S にしました。
2017/09/30 Ver 1.200
Open Folder が常に選択された状態で開かれる様に 新しいフォルダーウィンドウで開く様にしました。
時間のかかる処理の時に 本来の処理以外の メッセージの取得 送りの効率と 安全性を上げて 出来るだけ 本来の ウィンドウプログラムの反応が損なわれない様にしました。
2019/07/01 Ver 1.300
検索中のキャンセル動作を統一してより色々のインタラプト条件でも キャンセルが入る様にして安全性を上げました。
又 此の検索中は リンク数 / 総調査ファイル 表示を出す事にして検索中のプログレスがより解る様にしました。
メニューは右クリックでも認める様にして File メニューの Folder では左右の動作を変える様にしました。
環境によっては ファイル のパスバッファが足りずに 他に影響を及ぼしてしまうのを無くしました。 File 検索ハンドルを戻し忘れのパスを修正しました。
後 通常ではあり得ないようなフォルダー深さの事も考慮して ワークバッファがオーバーして 他に影響を 及ぼさないように 事前に収まる確認をして 安全性を高めました。
2019/11/10 Ver 1.340
フォームで使用する フォントは 現在のエクスプローラーの使用している物と同一の物として 画面表示が 違和感の無い物にし 解像度の違うディスプレーにもサイズ対応が良くなりました。
フォームのサイズ調整であまりに幅を小さくされた時にボタン等の配置がおかしくならない幅に制限しました。
2020/02/05 Ver 1.360
About のメッセージボックスや Folder 選択 のダイアログ の位置を プログラムと関連の有る位置に 表示する様にしました。
2020/04/20 Ver 1.380
メッセージボックスや Folder 選択 のダイアログ に ExecMenu アイコン を入れる様にしました。
2020/11/01 Ver 1.400
マルチモニター環境に対応しました。
IME を使用しての入力は無いので使用しない宣言をして常駐メモリーを減少させました。
2022/06/05 Ver 1.420
内部的に動作をやり取りするメッセージポストが機能をしたり表示を変えたりする ウィンドウズ メッセージに係らない様に順序正しく廻る様にして安定性を上げました。

  最新版 06/05 2022 Ver 1.420 Size 18 kb ExecMenu のダウンロード
−戻る−