SHELLEXECUTEINFOA 構造体 (shellapi.h)
ShellExecuteExで使用される情報を格納します。
構文
typedef struct _SHELLEXECUTEINFOA {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCSTR lpVerb;
LPCSTR lpFile;
LPCSTR lpParameters;
LPCSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
void *lpIDList;
LPCSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA;
メンバーズ
cbSize
型: DWORD
必須。 この構造体のサイズ (バイト単位)。
fMask
型: ULONG
他の構造体メンバーの内容と有効性を示す、次の値の 1 つ以上の組み合わせ。
SEE_MASK_DEFAULT (0x00000000) | 既定値を使用します。 |
SEE_MASK_CLASSNAME (0x00000001) | lpClass メンバーによって指定されたクラス名を使用します。 SEE_MASK_CLASSKEYとSEE_MASK_CLASSNAMEの両方が設定されている場合は、クラス キーが使用されます。 |
SEE_MASK_CLASSKEY (0x00000003) | hkeyClass メンバーによって指定されたクラス キーを使用します。 SEE_MASK_CLASSKEYとSEE_MASK_CLASSNAMEの両方が設定されている場合は、クラス キーが使用されます。 |
SEE_MASK_IDLIST (0x00000004) | lpIDList メンバーによって指定された項目識別子リストを使用します。 lpIDList メンバーは、ITEMIDLIST 構造体を指す必要があります。 |
SEE_MASK_INVOKEIDLIST (0x0000000C) | 選択した項目の ショートカット メニュー ハンドラーの IContextMenu インターフェイス使用します。
注: SEE_MASK_INVOKEIDLIST はオーバーライドされ、SEE_MASK_IDLISTを意味します。
|
SEE_MASK_ICON (0x00000010) |
hIcon メンバーによって指定されたアイコンを使用します。 このフラグをSEE_MASK_HMONITORと組み合わせることはできません。
注: このフラグは、Windows XP 以前でのみ使用されます。 Windows Vista の時点では無視されます。
|
SEE_MASK_HOTKEY (0x00000020) | dwHotKey メンバーによって提供されるキーボード ショートカットを使用します。 |
SEE_MASK_NOCLOSEPROCESS (0x00000040) | hProcess メンバーがプロセス ハンドルを受け取っていることを示すために使用します。 通常、このハンドルは、ShellExecuteEx で作成されたプロセスがいつ終了するかをアプリケーションが確認できるようにするために使用されます。 DDE 会話を通じて実行が満たされた場合など、ハンドルが返されない場合があります。 呼び出し元のアプリケーションは、不要になったときにハンドルを閉じる役割を担います。 |
SEE_MASK_CONNECTNETDRV (0x00000080) | 共有を検証し、ドライブ文字に接続します。 これにより、切断されたネットワーク ドライブの再接続が可能になります。 lpFile メンバーは、ネットワーク上のファイルの UNC パスです。 |
SEE_MASK_NOASYNC (0x00000100) | 実行操作が完了するまで待ってから、戻ります。 このフラグは、非同期アクティブ化 (DDE など) になる可能性がある ShellExecute フォームを使用している呼び出し元が使用し、バックグラウンド スレッドで実行される可能性のあるプロセスを作成する必要があります。 (注: 実行操作がバックグラウンド スレッドで実行され、呼び出し元が SEE_MASK_ASYNCOK フラグを指定しなかった場合、呼び出し元のスレッドは、新しいプロセスが開始されるまで待機してから戻ります。 これは通常、CreateProcess が呼び出された このフラグが必要な場合の詳細については、「解説」セクションを参照してください。 |
SEE_MASK_FLAG_DDEWAIT (0x00000100) | SEE_MASK_NOASYNCと同じように、そのオプションを使用することをお勧めします。 |
SEE_MASK_DOENVSUBST (0x00000200) | lpDirectory または lpFile メンバーによって指定された文字列で指定された環境変数を展開します。 |
SEE_MASK_FLAG_NO_UI (0x00000400) | 通常、このオプションなしで表示されるユーザー インターフェイス (UI) エラー ダイアログは表示しないでください。 セキュリティ プロンプトは除外され、引き続き表示されます。 |
SEE_MASK_UNICODE (0x00004000) | Unicode アプリケーションを示すには、このフラグを使用します。 |
SEE_MASK_NO_CONSOLE (0x00008000) | 新しいコンソールを作成するのではなく、新しいプロセスの親のコンソールを継承するために使用します。 これは、CreateProcessでCREATE_NEW_CONSOLE フラグ |
SEE_MASK_ASYNCOK (0x00100000) | 実行はバックグラウンド スレッドで実行でき、呼び出しはバックグラウンド スレッドが完了するのを待たずに直ちに返されます。 場合によっては、ShellExecuteEx |
SEE_MASK_NOQUERYCLASSSTORE (0x01000000) | 使用されません。 |
SEE_MASK_HMONITOR (0x00200000) | マルチモニター・システムでモニターを指定する場合は、このフラグを使用します。 モニターは、hMonitor メンバーで指定されます。 このフラグをSEE_MASK_ICONと組み合わせることはできません。 |
SEE_MASK_NOZONECHECKS (0x00800000) | ゾーン チェックは実行しないでください。 このフラグを使用すると、 |
SEE_MASK_WAITFORINPUTIDLE (0x02000000) | 新しいプロセスが作成されたら、プロセスがアイドル状態になるまで待ってから、1 分間のタイムアウトで戻ります。 詳細については、WaitForInputIdle の |
SEE_MASK_FLAG_LOG_USAGE (0x04000000) | 頻繁に使用されるプログラムやその他の動作の追跡を可能にする、ユーザーが起動を開始したことを示します。 |
SEE_MASK_FLAG_HINST_IS_SITE (0x08000000) | ICreatingProcess を指定して、呼び出し元が作成されるプロセスのパラメーターを変更できるようにします。 このフラグは、Windows 8 以降でサポートされています。 このオプションを指定すると、呼び出しは呼び出し元のスレッドで同期的に実行されます。 |
hwnd
型: HWND
随意。 所有者ウィンドウへのハンドル。この関数の実行中にシステムによって生成される可能性のある UI を表示および配置するために使用されます。
lpVerb
型: LPCTSTR
実行するアクションを指定する、動詞と呼ばれる文字列。 使用可能な動詞のセットは、特定のファイルまたはフォルダーによって異なります。 一般に、オブジェクトのショートカット メニューから使用できるアクションは、動詞として使用できます。 このパラメーターは NULL
次の動詞が一般的に使用されます。
-
編集: エディターを起動し、編集用にドキュメントを開きます。 lpFile
ドキュメント ファイルでない場合、関数は失敗します。 を調べる: lpFileで指定されたフォルダー 調べられます。 - を検索
: 指定したディレクトリから検索を開始します。 - を開
: lpFile パラメーターで指定されたファイルを開きます。 ファイルには、実行可能ファイル、ドキュメント ファイル、またはフォルダーを指定できます。 - openas: ユーザーが、lpFile パラメーターで指定されたファイルを開くアプリを選択できるピッカー UI を起動します。
印刷 : lpFileで指定されたドキュメント ファイル印刷します。 lpFile ドキュメント ファイルでない場合、関数は失敗します。 - プロパティ: ファイルまたはフォルダーのプロパティを表示します。
- runas: 管理者としてアプリケーションを起動します。 ユーザー アカウント制御 (UAC) は、アプリケーションを管理者特権で実行するか、アプリケーションの実行に使用する管理者アカウントの資格情報を入力する同意をユーザーに求めます。
lpFile
型: LPCTSTR
shellExecuteEx が
lpParameters
型: LPCTSTR
随意。 アプリケーション パラメーターを含む null で終わる文字列のアドレス。 パラメーターはスペースで区切る必要があります。
lpDirectory
型: LPCTSTR
随意。 作業ディレクトリの名前を指定する null で終わる文字列のアドレス。 このメンバーが NULL
nShow
型: int
必須。 アプリケーションを開くときに表示する方法を指定するフラグ。ShellExecute 関数に一覧表示されているSW_値の 1 つ。 lpFile
hInstApp
型: HINSTANCE
[out]SEE_MASK_NOCLOSEPROCESSが設定され、ShellExecuteEx 呼び出しが成功した場合、このメンバーは 32 より大きい値に設定されます。 関数が失敗した場合は、エラーの原因を示すSE_ERR_XXXエラー値に設定されます。 hInstApp は、16 ビット Windows アプリケーションとの互換性のために HINSTANCE として宣言されていますが、実際の HINSTANCE ではありません。 これは、32 または次のSE_ERR_XXXエラー コードと比較して、int にのみキャストできます。
エラー コード | 理由 |
---|---|
SE_ERR_FNF (2) | ファイルが見つかりません。 |
SE_ERR_PNF (3) | パスが見つかりません。 |
SE_ERR_ACCESSDENIED (5) | アクセスが拒否されました。 |
SE_ERR_OOM (8) | メモリ不足。 |
SE_ERR_DLLNOTFOUND (32) | ダイナミック リンク ライブラリが見つかりません。 |
SE_ERR_SHARE (26) | 開いているファイルを共有できません。 |
SE_ERR_ASSOCINCOMPLETE (27) | ファイルの関連付け情報が完全ではありません。 |
SE_ERR_DDETIMEOUT (28) | DDE 操作がタイムアウトしました。 |
SE_ERR_DDEFAIL (29) | DDE 操作に失敗しました。 |
SE_ERR_DDEBUSY (30) | DDE 操作がビジー状態です。 |
SE_ERR_NOASSOC (31) | ファイルの関連付けは使用できません。 |
lpIDList
型: LPVOID
実行するファイルを一意に識別する項目識別子リストを格納する絶対 ITEMIDLIST 構造体 (PCIDLIST_ABSOLUTE) のアドレス。 fMask メンバーに SEE_MASK_IDLIST または SEE_MASK_INVOKEIDLISTが含まれていない場合、このメンバーは無視されます。
lpClass
型: LPCTSTR
次のいずれかを指定する null で終わる文字列のアドレス。
- ProgId。 たとえば、"Paint.Picture" などです。
- URI プロトコル スキーム。 たとえば、"http" などです。
- ファイル拡張子。 たとえば、".txt" などです。
- 1 つ以上のシェル動詞を含むサブキーに名前を付HKEY_CLASSES_ROOTの下のレジストリ パス。 このキーには、シェル動詞レジストリ スキーマに準拠するサブキーが含まれます。たとえば、シェル
動詞名 します。
fMask
hkeyClass
型: HKEY
ファイルの種類のレジストリ キーへのハンドル。 このレジストリ キーのアクセス権は、KEY_READに設定する必要があります。 fMask
dwHotKey
型: DWORD
アプリケーションに関連付けるキーボード ショートカット。 下位ワードは仮想キー コードであり、上位ワードは修飾子フラグ (HOTKEYF_) です。 修飾子フラグの一覧については、WM_SETHOTKEY メッセージの説明を参照してください。 fMask
DUMMYUNIONNAME
DUMMYUNIONNAME.hIcon
型: HANDLE
ファイルの種類のアイコンへのハンドル。 fMask
DUMMYUNIONNAME.hMonitor
型: HANDLE
ドキュメントを表示するモニターのハンドル。 fMask
hProcess
型: HANDLE
新しく開始されたアプリケーションのハンドル。 このメンバーは戻り値に設定され、fMask が
備考
呼び出し元のスレッドにメッセージ ループがあり、ShellExecuteEx の呼び出し
lpParametersに二重引用符
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
この場合、アプリケーションは 3 つのパラメーターを受け取ります。、例:、"引用符で囲まれたテキスト"。
手記
shellapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SHELLEXECUTEINFO を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルまたは実行時エラーが発生する不一致につながる可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー | shellapi.h |