「Windowsの右クリックメニューから複数ファイルをまとめて開く」の版間の差分

Notion-MW
タグ: 差し戻し済み
Notion-MW
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
複数のファイルを別々にではなく<strong>一度にまとめて</strong>開きたいということがある。すなわち”app.exe file1” “app.exe file2”…をそれぞれ実行するのではなく、”app.exe file1 file2 …”を実行したい。例えば複数の音楽ファイルを連続再生したいときなどであるe。
複数のファイルを別々にではなく<strong>一度にまとめて</strong>開きたいということがある。すなわち”app.exe file1” “app.exe file2”…をそれぞれ実行するのではなく、”app.exe file1 file2 …”を実行したい。例えば複数の音楽ファイルを連続再生したいときなどである。


ただ、エクスプローラ上で複数ファイルを選択して開く(右クリックで「開く」を選ぶorエンターキー)と、別々に実行されてしまう。では、右クリックメニューからこれを実行するにはどうすればいいか?というのがこの記事のテーマである。
ただ、エクスプローラ上で複数ファイルを選択して開く(右クリックで「開く」を選ぶorエンターキー)と、別々に実行されてしまう。では、右クリックメニューからこれを実行するにはどうすればいいか?というのがこの記事のテーマである。
220行目: 220行目:
<ul>
<ul>
<li><p>Windows 11の右クリックメニューに追加してくれるソフト</p>
<li><p>Windows 11の右クリックメニューに追加してくれるソフト</p>
<p>[https://github.com/ikas-mc/ContextMenuForWindows11 link_preview]</p>
<p>[https://github.com/ikas-mc/ContextMenuForWindows11 https://github.com/ikas-mc/ContextMenuForWindows11]</p>
<p>フォルダ背景を右クリックしたメニューに追加できない([https://github.com/ikas-mc/ContextMenuForWindows11/issues/44 https://github.com/ikas-mc/ContextMenuForWindows11/issues/44])(いや、使ってみたら普通にできてるっぽい?)、アプリ1つにつき1メニューしか追加できない([https://github.com/ikas-mc/ContextMenuForWindows11/issues/45 https://github.com/ikas-mc/ContextMenuForWindows11/issues/45])(これはWindows側がそういう仕様っぽいので厳しそう)</p></li>
<p>フォルダ背景を右クリックしたメニューに追加できない([https://github.com/ikas-mc/ContextMenuForWindows11/issues/44 https://github.com/ikas-mc/ContextMenuForWindows11/issues/44])(いや、使ってみたら普通にできてるっぽい?)、アプリ1つにつき1メニューしか追加できない([https://github.com/ikas-mc/ContextMenuForWindows11/issues/45 https://github.com/ikas-mc/ContextMenuForWindows11/issues/45])(これはWindows側がそういう仕様っぽいので厳しそう)</p></li>
<li><p>Microsoftの関連するサンプル<br />
<li><p>Microsoftの関連するサンプル<br />
234行目: 234行目:
まずは、COMを用いて実装するという方法がある。基本的にはこちらが綺麗な解決策である。
まずは、COMを用いて実装するという方法がある。基本的にはこちらが綺麗な解決策である。


IExecuteCommandというインターフェースを具体的に実装している[https://learn.microsoft.com/en-us/windows/win32/shell/samples-executecommandverb Microsoftのサンプル]があったので、それを参考に、「任意コマンドを引数にとり、取得したファイル・フォルダの情報をそのコマンドの標準入力にUTF&#45;8で送信する」というプログラムを作成した。
IExecuteCommandというインターフェースを具体的に実装している[https://learn.microsoft.com/en-us/windows/win32/shell/samples-executecommandverb Microsoftのサンプル]があったので、それを参考に、「取得したファイル・フォルダの情報を引数または標準入力として渡しつつ指定されたコマンドを起動する」というプログラムを作成した。


[https://github.com/ge9/ExecuteCommand-Pipe link_preview]
[https://github.com/ge9/ExecuteCommand-Pipe https://github.com/ge9/ExecuteCommand-Pipe]


COMを使っていることからわかるように、コマンドラインを介さず直接Explorerからデータが送られてくるので、他の方法に共通してみられるパス長さやファイル個数の制限が(事実上)皆無であり、非常に強力である。
COMを使っていることからわかるように、コマンドラインを介さず直接Explorerからデータが送られてくるので、他の方法に共通してみられるパス長さやファイル個数の制限が(事実上)皆無であり、非常に強力である。