STARTUPINFOA 構造体 (processthreadsapi.h)
作成時のプロセスのウィンドウ ステーション、デスクトップ、標準ハンドル、およびメイン ウィンドウの外観を指定します。
構文
typedef struct _STARTUPINFOA {
DWORD cb;
LPSTR lpReserved;
LPSTR lpDesktop;
LPSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFOA, *LPSTARTUPINFOA;
メンバーズ
cb
構造体のサイズ (バイト単位)。
lpReserved
引っ込み思案;は NULL である必要があります。
lpDesktop
デスクトップの名前、またはこのプロセスのデスクトップステーションとウィンドウステーションの両方の名前。 文字列の円記号は、文字列にデスクトップステーション名とウィンドウステーション名の両方が含まれていることを示します。
詳細については、「デスクトップへのスレッド接続を
lpTitle
コンソール プロセスの場合、これは、新しいコンソール ウィンドウが作成された場合にタイトル バーに表示されるタイトルです。 NULL の場合、実行可能ファイルの名前が代わりにウィンドウ タイトルとして使用されます。 このパラメーターは、新しいコンソール ウィンドウを作成しない GUI またはコンソール プロセスの場合は NULL である必要があります。
dwX
dwFlags
オフセットは画面の左上隅からの値です。 GUI プロセスの場合、CreateWindow の
dwY
dwFlags
オフセットは画面の左上隅からの値です。 GUI プロセスの場合、CreateWindow の
dwXSize
dwFlags
GUI プロセスの場合、これは、CreateWindow の
dwYSize
dwFlags
GUI プロセスの場合、これは、CreateWindow
dwXCountChars
dwFlags
dwYCountChars
dwFlags
dwFillAttribute
dwFlags
この値は、FOREGROUND_BLUE、FOREGROUND_GREEN、FOREGROUND_RED、FOREGROUND_INTENSITY、BACKGROUND_BLUE、BACKGROUND_GREEN、BACKGROUND_RED、およびBACKGROUND_INTENSITYの任意の組み合わせにすることができます。 たとえば、次の値の組み合わせにより、白い背景に赤いテキストが生成されます。
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
dwFlags
プロセスがウィンドウを作成するときに、STARTUPINFO メンバー
価値 | 意味 |
---|---|
|
CreateProcess が呼び出された後、カーソルが 2 秒間フィードバック モード この 2 秒の間にプロセスが最初の GUI 呼び出しを行うと、システムはプロセスにさらに 5 秒を与えます。 この 5 秒の間にプロセスにウィンドウが表示される場合、システムはウィンドウの描画を完了するプロセスにさらに 5 秒を与えます。 プロセスが描画されているかどうかに関係なく、GetMessage |
|
プロセスの開始時にフィードバック カーソルが強制的にオフになっていることを示します。 [標準選択] カーソルが表示されます。 |
|
プロセスによって作成されたウィンドウをタスク バーにピン留めできないことを示します。
このフラグは、STARTF_TITLEISAPPIDと組み合わせる必要があります。 |
|
ウィンドウ モードではなく、全画面表示モードでプロセスを実行する必要があることを示します。
このフラグは、x86 コンピューターで実行されているコンソール アプリケーションでのみ有効です。 |
|
lpTitle メンバーには、AppUserModelID が含まれています。 この識別子は、タスク バーと スタート メニューがアプリケーションを表示する方法を制御し、適切なショートカットとジャンプ リストに関連付けできるようにします。 一般に、アプリケーションでは、このフラグを設定する代わりに、SetCurrentProcessExplicitAppUserModelIDと GetCurrentProcessExplicitAppUserModelID 関数を使用します。 詳細については、「アプリケーション ユーザー モデル ID」を参照してください。
STARTF_PREVENTPINNINGを使用している場合、アプリケーション ウィンドウをタスク バーにピン留めすることはできません。 アプリケーションで AppUserModelID 関連のウィンドウ プロパティを使用すると、そのウィンドウに対してのみこの設定がオーバーライドされます。 このフラグは、STARTF_TITLEISLINKNAMEでは使用できません。 |
|
lpTitle メンバーには、ユーザーがこのプロセスを開始するために呼び出したショートカット ファイル (.lnk) のパスが含まれています。 これは通常、起動されたアプリケーションを指す.lnk ファイルが呼び出されたときにシェルによって設定されます。 ほとんどのアプリケーションでは、この値を設定する必要はありません。
このフラグは、STARTF_TITLEISAPPIDでは使用できません。 |
|
コマンド ラインは信頼されていないソースから来ました。 詳細については、「解説」を参照してください。 |
|
dwXCountChars および dwYCountChars メンバー 追加情報が含まれています。 |
|
dwFillAttribute メンバーには追加情報が含まれています。 |
|
hStdInput メンバーには追加情報が含まれています。
このフラグは、STARTF_USESTDHANDLESでは使用できません。 |
|
dwX および dwY メンバーには、追加情報が含まれています。 |
|
wShowWindow メンバーには追加情報が含まれています。 |
|
|
|
プロセス作成関数のいずれかを呼び出すときにこのフラグを指定する場合、ハンドルは継承可能で、関数の bInheritHandles パラメーターを TRUE に設定する必要があります。 詳細については、「継承 GetStartupInfo 関数の呼び出し時にこのフラグを指定した場合、これらのメンバーは、プロセスの作成時に指定されたハンドル値またはINVALID_HANDLE_VALUEのいずれかになります。 ハンドルは、必要なくなったときに、CloseHandle で閉じる必要があります。 このフラグは、STARTF_USEHOTKEYでは使用できません。 |
wShowWindow
dwFlags
GUI プロセスの場合、ShowWindow
cbReserved2
C ランタイムで使用するために予約されています。は 0 にする必要があります。
lpReserved2
C ランタイムで使用するために予約されています。は NULL である必要があります。
hStdInput
dwFlags
dwFlags
それ以外の場合、このメンバーは無視されます。
hStdOutput
dwFlags
タスク バーまたはジャンプ リストからプロセスが起動された場合、システムは hStdOutput
hStdError
dwFlags
備考
グラフィカル ユーザー インターフェイス (GUI) プロセスの場合、この情報は、CreateWindow 関数によって作成され、ShowWindow 関数によって表示される最初のウィンドウに影響します。 コンソール プロセスの場合、この情報は、プロセス用に新しいコンソールが作成された場合にコンソール ウィンドウに影響します。 プロセスは、GetStartupInfo 関数を使用して、プロセスの作成時に指定された STARTUPINFO 構造体を取得できます。
GUI プロセスが開始されていて、STARTF_FORCEONFEEDBACKもSTARTF_FORCEOFFFEEDBACKも指定されていない場合は、プロセス・フィードバック・カーソルが使用されます。 GUI プロセスは、サブシステムが "windows" として指定されているプロセスです。
タスク バーまたはジャンプ リストからプロセスが起動された場合、システムは GetStartupInfo
STARTF_UNTRUSTEDSOURCE フラグが指定されている場合、アプリケーションはコマンド ラインが信頼されていないことを認識する必要があります。 このフラグが設定されている場合、アプリケーションはマクロ、ダウンロードされたコンテンツ、自動印刷などの潜在的に危険な機能を無効にする必要があります。 このフラグは省略可能ですが、CreateProcess
STARTF_UNTRUSTEDSOURCE フラグは Windows Vista 以降でサポートされていますが、Windows 10 SDK より前の SDK ヘッダー ファイルでは定義されていません。 Windows 10 より前のバージョンでフラグを使用するには、プログラムで手動で定義できます。
例
次のコード例は、StartUpInfoAの使用方法を示しています。
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
void _tmain( int argc, TCHAR *argv[] )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( argc != 2 )
{
printf("Usage: %s [cmdline]\n", argv[0]);
return;
}
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line)
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
この例の詳細については、「プロセスの作成
手記
processthreadsapi.h ヘッダーは、STARTUPINFO をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ヘッダー | processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
関連項目
CreateProcess の
CreateProcessAsUser の
CreateProcessWithLogonW の
CreateProcessWithTokenW の
GetStartupInfo の