Win32 固有の API を使用して、ファイルのパス/名前を渡すだけで外部アプリケーションを起動してファイルを開く簡単な方法はありますか?
たとえば、C:\tmp\image.jpg というファイルがあるとします。.jpg ファイルに関連付けられたアプリケーションを開くように Windows に指示するために呼び出すことができる単一の API はありますか? 一連のレジストリ ルックアップを実行する必要はありませんか?
何年も前にこれをやったのを覚えていると思ったのですが、見つかりません。
Win32 固有の API を使用して、ファイルのパス/名前を渡すだけで外部アプリケーションを起動してファイルを開く簡単な方法はありますか?
たとえば、C:\tmp\image.jpg というファイルがあるとします。.jpg ファイルに関連付けられたアプリケーションを開くように Windows に指示するために呼び出すことができる単一の API はありますか? 一連のレジストリ ルックアップを実行する必要はありませんか?
何年も前にこれをやったのを覚えていると思ったのですが、見つかりません。
指定されたファイルに対して操作を実行します。
構文
C++
HINSTANCE ShellExecute( _In_opt_ HWND hwnd, _In_opt_ LPCTSTR lpOperation, _In_ LPCTSTR lpFile, _In_opt_ LPCTSTR lpParameters, _In_opt_ LPCTSTR lpDirectory, _In_ INT nShowCmd );パラメーター
...
nShowCmd [in]
タイプ:知
アプリケーションを開いたときのアプリケーションの表示方法を指定するフラグ。lpFileがドキュメント ファイルを指定する場合、フラグは関連付けられたアプリケーションに単純に渡されます。それをどのように扱うかはアプリケーション次第です。これらの値は Winuser.h で定義されています...
ShellExecuteはあなたが探している関数です。実行可能ファイルタイプと登録済みファイルタイプの両方を処理でき、サポート内容に応じて、ファイルに対してあらゆる種類のアクション(動詞)を実行できます。
構文は次のとおりです。
HINSTANCE ShellExecute(
HWND hwnd, // handle to owner window.
LPCTSTR lpOperation, // verb to do, e.g., edit, open, print.
LPCTSTR lpFile, // file to perform verb on.
LPCTSTR lpParameters, // parameters if lpFile is executable, else NULL.
LPCTSTR lpDirectory, // working directory or NULL for current directory.
INT nShowCmd // window mode e.g., SW_HIDE, SW_SHOWNORMAL.
);
詳細については、親しみやすい近所のMSDNドキュメントを参照してください。