Shellexecは、プログラム(現在のユーザーまたは管理者として)を実行できるコンソールアプリケーション、関連するアプリケーションでドキュメントを開く、デフォルトのブラウザでWebページを表示できるようにするコンソールアプリケーションです。これは、Shellexecuteex機能の「コンソールラッパー」です。

コンパイルされたバイナリ:
shellexec_win64.zip(〜96 kb)
shellexec_win32.zip(〜72 kb)
ShellExec FILE [-o Operation] [-p Parameters] [-d Directory] [-s ShowCommand]
[-w [finish|idle]] [-t TIME] [-hwnd WindowHandle] [-h] [-V] [--license] [--home] [--source]
オプションはケースに敏感です。四角いブラケットのオプションはオプションです。
-o 、 --operation=STR
実行されるアクション。デフォルトのアクションが開いています。以下の説明を参照してください。
-p 、 --params=STR
ファイルが実行可能ファイルを指定する場合、このパラメーターは、アプリケーションに渡されるパラメーターを指定する文字列です。
-d 、 --directory=DIR
アクションのための作業ディレクトリ。
-s 、 --show-cmd=STR
このパラメーターは、アプリケーションが開かれたときに表示される方法を指定します。デフォルトのshowコマンドはsw_shownormalです。以下の説明を参照してください。
-w 、 --wait=[FOR]
終了またはアイドル。デフォルト:終了。 -tオプションで待機時間を指定しない場合、 Infiniteが使用されます( -t=infinite )。以下の説明を参照してください。
-t 、 --wait-time=TIME
タイムアウト間隔( -wオプションの場合)。利用可能な時間単位: ms (ミリ秒)、 s (秒)、 m (分)、 h (時間)、 d (日)。ユニットが指定されていない場合、ミリ秒が使用されます。値の無限は、時間制限がないことを意味します。
-hwnd 、 --window-handle=INT
UIまたはエラーメッセージの表示に使用される親ウィンドウのハンドル。
-h 、 --help
ヘルプを表示します。
-V 、 --version
アプリケーションバージョンを表示します。
--license
プログラムライセンスを表示します。
--home
デフォルトのブラウザでプログラムのホームページを開きます。
--source
プログラムのソースファイルを使用して、GitHubのプログラムページを開きます。
指定された操作を実行するためのファイル名またはディレクトリまたはURLまたはオブジェクト。
開ける
ファイルパラメーターで指定されたアイテムを開きます。アイテムは、ファイルまたはフォルダーまたはURLにすることができます。
編集
編集者を起動し、編集用のドキュメントを開きます。ファイルがドキュメントファイルでない場合、Shellexecは失敗します。
探検する
ファイルで指定されたフォルダーを探索します。
探す-dオプションで指定されたディレクトリで開始される検索を開始します。
印刷
ファイルで指定されたファイルを印刷します。ファイルがドキュメントファイルでない場合、プログラムは失敗します。
ラナ
管理者としてアプリケーションを起動します。ユーザーアカウントコントロール(UAC)は、アプリケーションを実行するアプリケーションを実行するか、アプリケーションの実行に使用される管理者アカウントの資格情報を入力するように同意を求めます。
プロパティ
ファイルまたはフォルダーのプロパティを表示します。
詳細(lpoperation):https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
詳細(LPVerb):https://docs.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-shellexecuteinfow
0 | SW_HIDE | Hide
ウィンドウを隠し、別のウィンドウをアクティブにします。
1 | SW_SHOWNORMAL | ShowNormal | SW_NORMAL | Normal
ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムは元のサイズと位置に復元します。アプリケーションは、ウィンドウを初めて表示するときにこのフラグを指定する必要があります。
2 | SW_SHOWMINIMIZED | ShowMinimized | Minimized
ウィンドウをアクティブにし、最小化されたウィンドウとして表示します。
3 | SW_SHOWMAXIMIZED | ShowMaximized | Maximized | Maximize
ウィンドウをアクティブにし、最大化されたウィンドウとして表示します。
4 | SW_SHOWNOACTIVATE | ShowNoActivate | NoActivate
最新のサイズと位置でウィンドウを表示します。この値は、ウィンドウがアクティブになっていないことを除いて、sw_shownormalに似ています。
5 | SW_SHOW | Show
ウィンドウをアクティブにし、現在のサイズと位置に表示します。
6 | SW_MINIMIZE | Minimize
指定されたウィンドウを最小化し、z順序で次のトップレベルウィンドウをアクティブにします。
7 | SW_SHOWMINNOACTIVE | ShowMinNoActive | MinNoActive
ウィンドウを最小化されたウィンドウとして表示します。この値は、ウィンドウがアクティブになっていない場合を除き、SW_SHOWMINIMIZEDに似ています。
8 | SW_SHOWNA | ShowNA
現在のサイズと位置にウィンドウを表示します。この値は、ウィンドウがアクティブになっていないことを除いて、SW_SHOWに似ています。
9 | SW_RESTORE | Restore
ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムは元のサイズと位置に復元します。アプリケーションは、最小化されたウィンドウを復元するときにこのフラグを指定する必要があります。
10 | SW_SHOWDEFAULT | ShowDefault
アプリケーションを開始したプログラムによってcreateProcess関数に渡されたStartupInfo構造で指定されたSW_値に基づいてショー状態を設定します。
11 | SW_FORCEMINIMIZE | ForceMinimize
ウィンドウを所有しているスレッドが応答していない場合でも、ウィンドウを最小化します。このフラグは、別のスレッドからウィンドウを最小化する場合にのみ使用する必要があります。
詳細:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-winuser-shohwindow#parameters
仕上げる
実行中のプログラム(ファイルパラメーターで指定)が操作を終了するか、タイムアウトインターバル( -tオプション)が経過するまで待ちます。
アイドル
指定されたプログラムが初期入力の処理が完了し、入力が保留中の入力なしでユーザー入力が待機しているか、タイムアウトインターバル( -tオプション)が経過するまで待機します。
詳細:
https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-faitforsingleobject
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-waitforinputidle
0-成功
その他の値 - エラー
システム計算機を起動します:
ShellExec calc
システムテキストエディターの「ホスト」ファイルを開きます。
ShellExec notepad -o runas -p "C:WindowsSystem32driversetchosts"
指定されたWebサイトをデフォルトのブラウザに表示します。
ShellExec https://example.com
INIファイルに関連付けられているテキストエディターに「win.ini」ファイルを開きます。
ShellExec "C:Windowswin.ini"
デフォルトのグラフィックビューアーでJPGファイルを開きます。
ShellExec "D:picturesmy picture.jpg"
デフォルトのエディタで編集するためにBATファイルを開き、プログラムが終了するのを待ちます。
ShellExec "D:batch_filestest.bat" -o edit -w=finish
パブリックドメイン。
Embarcadero Delphi XE2以降が必要です(無料のコミュニティバージョンはEAUDです)。
また、JPLIBライブラリからいくつかのユニットが必要です。