CreateProcess関数、CreateProcessAsUser関数、CreateProcessWithLogonW関数のパラメータとして、プロセスを作成する際のウィンドウステーション、デスクトップ、標準ハンドル、メインウィンドウの表示に関する属性を指定するのに使用されます。
typedef struct _STARTUPINFO { DWORD cb; // structure size LPTSTR lpReserved; // reserved LPTSTR lpDesktop; // desktop LPTSTR lpTitle; // window caption DWORD dwX; // X position DWORD dwY; // Y position DWORD dwXSize; // X size DWORD dwYSize; // Y size DWORD dwXCountChars; // witdh in character DWORD dwYCountChars; // height in character DWORD dwFillAttribute; // character and background color DWORD dwFlags; // flags WORD wShowWindow; // how window to be shown WORD cbReserved2; // reserved LPBYTE lpReserved2; // reserved HANDLE hStdInput; // standard input HANDLE hStdOutput; // standard output HANDLE hStdError; // standard error output } STARTUPINFO, *LPSTARTUPINFO;
GUIアプリケーションとコンソールアプリケーションで使われるメンバを以下に示します。
メンバ名 | GUIアプリケーション | コンソールアプリケーション |
---|---|---|
cb | 〇 | 〇 |
lpReserved | 〇 | 〇 |
lpDesktop | 〇 | 〇 |
lpTitle | 〇 | |
dwX | 〇 | 〇 |
dwY | 〇 | 〇 |
dwXSize | 〇 | 〇 |
dwYSize | 〇 | 〇 |
dwXCountChars | 〇 | |
dwYCountChars | 〇 | |
dwFillAttrbute | 〇 | |
dwFlags | 〇 | 〇 |
wShowWindow | 〇 | |
cbReserved2 | 〇 | 〇 |
lpReserved2 | 〇 | 〇 |
hStdInput | 〇 | |
hStdOutput | 〇 | |
hStdError | 〇 |
構造体のサイズをバイト単位で指定します。この値は68になります。
予約されています。0 (NULL) を指定しなければなりません。
このプロセスが起動するための、デスクトップの名前のみを表す文字列のアドレスか、または、デスクトップとウィンドウステーションの両方の名前を表す文字列のアドレスを指定します。文字列中にバックスラッシュは、デスクトップとウィンドウステーションの両方の名前が指定されていることを示します。
CreateProcess関数およびCreateProcessAsUser関数の呼び出しでは、このメンバに0 (NULL) を指定した場合は、親プロセスのデスクトップおよびウィンドウステーションを継承します。空文字列のアドレスが指定された場合は、親プロセスのデスクトップおよびウィンドウステーションを継承せずに、システムは新しいデスクトップおよびウィンドウステーションを作成する必要があるかどうかを決定します。
CreateProcessWithLogonW関数の呼び出しでは、このメンバに0 (NULL) を指定するか、空文字列のアドレスを指定した場合は、親プロセスのデスクトップおよびウィンドウステーションを継承し、指定されたユーザーアカウントに対するパーミッション(許可)を継承されたウィンドウステーションおよびデスクトップに追加します。それ以外の場合は、このメンバにデスクトップが指定されている場合には、アプリケーションが指定されたユーザーアカウントに対するパーミッションを指定されたウィンドウステーションおよびデスクトップに追加しなければいけません。
Windows 95/98/Me: デスクトップおよびウィンドウステーションはサポートされません。このメンバには0 (NULL) を指定します。
コンソールプロセスでは、新しいコンソールウィンドウが作成される場合にタイトルバーに表示されるタイトル文字列のアドレスを指定します。0 (NULL) を指定すると、実行ファイル名がウィンドウタイトルになります。GUIプロセスまたはウィンドウを表示しないコンソールプロセスでは0 (NULL) を指定しなければなりません。
新しいウィンドウが作成される場合に、ウィンドウの x 座標および y 座標をピクセル単位で指定します。この座標はスクリーン座標系で指定します。GUIプロセスでは、最初に新しいプロセスがCreateWindow関数またはCreateWindowEx関数を呼び出してオーバーラップウィンドウを作成するときに、xパラメータおよびyパラメータにCW_USEDEFAULTを指定した場合に、このメンバで指定された座標が使われます。このメンバはdwFlagsメンバでSTARTF_USESIZEを指定している場合にのみ有効です。
新しいウィンドウが作成される場合に、ウィンドウの幅および高さをピクセル単位で指定します。アプリケーションの最初のウィンドウの幅および高さです。GUIプロセスでは、最初に新しいプロセスがCreateWindow関数またはCreateWindowEx関数を呼び出してオーバーラップウィンドウを作成するときに、nWidthパラメータおよびnHeightパラメータにCW_USEDEFAULTを指定した場合に、このメンバで指定された幅および高さが使われます。このメンバはdwFlagsメンバでSTARTF_USESIZEを指定している場合にのみ有効です。
コンソールプロセスで、新しいコンソールウィンドウが作成される場合に、スクリーンバッファの幅と高さを文字単位で指定します。このメンバはdwFlagsメンバでSTARTF_USECOUNTCHARSを指定している場合にのみ有効です。
Windows 95/98/Me: このメンバは無視されます。
コンソールアプリケーションで新しいコンソールウィンドウが作成される場合に、コンソールアプリケーションの文字色と背景色の初期値を指定します。このメンバはGUIアプリケーションでは無視されます。以下の値の組み合わせで指定することができます。
文字色に青を含めます。
文字色に緑を含めます。
文字色に赤を含めます。
文字色を強調します。
背景色に青を含めます。
背景色に緑を含めます。
背景色に赤を含めます。
背景色を強調します。
このメンバはdwFlagsメンバでSTARTF_USEFILLATTRIBUTEを指定している場合にのみ有効です。
プロセスがウィンドウを作成する際に構造体のメンバを有効にするかどうかを表すオプションフラグを指定します。以下の値の組み合わせを指定することができます。
wShowWindowメンバが有効です。
dwXsize, dwYsizeメンバが有効です。
dwX, dwYメンバが有効です。
dwXCountChars, dwYCountCharsメンバが有効です。
Windows 95/98/Me: この値はサポートされません。
dwFillAttributeメンバが有効です。
x86コンピュータで実行されるコンソールアプリケーションにおいて、プロセスをウィンドウモードでなくフルスクリーンモードで実行するように指定します。
Windows 95/98/Me: この値はサポートされません。
起動時にカーソルを変更します。(下記を参照)
起動時にカーソルを変更しません。
hStdInput, hStdOutput, hStdErrorメンバが有効です。
STARTF_FORCEONFEEDBACKフラグを指定すると、起動時にカーソルが start glass(矢印と砂時計のカーソル)に変更されます。その後新しいプロセスが2秒以内にGUI APIを呼び出さなかった場合には、カーソルがデフォルト形状に戻されます。
一方、2秒以内にGUI APIが呼び出された場合には、アプリケーションのウィンドウが表示されるのを待ちます。5秒以内に表示されない場合はカーソルをデフォルトに戻します。5秒以内に表示された場合はさらに5秒間待機します。
ただしGetMessage関数が呼び出された場合には、プロセスの初期化が終了したとして、カーソルをデフォルトに戻してプロセスの監視を終了します。
ShowWindow関数のnCmdShowパラメータとして指定することのできるSW_値を指定します。GUIプロセスでは、最初にShowWindow関数が呼び出されたときnCmdShowパラメータの値は無視され、このメンバで指定された値が使われます。また、2回目以降の呼び出しでnCmdShowパラメータにSW_SHOWDEFAULTが指定された場合に、このメンバで指定された値が使われます。このメンバはdwFlagsメンバでSTARTF_USESHOWWINDOWを指定している場合にのみ有効です。
Cランタイムのために予約されています。0 を指定しなければなりません。
Cランタイムのために予約されています。0 (NULL) を指定しなければなりません。
それぞれ、プロセスの標準入力ハンドル、標準出力ハンドル、標準エラーハンドルとして使われるハンドルを指定します。デフォルトではhStdInputにはキーボードバッファ、hStdOutputおよびhStdErrorにはコンソールウィンドウバッファのハンドルが設定されます。これらのハンドルが継承可能であり、かつCreateProcess関数のbInheritHandlesパラメータに1 (TRUE) が指定されている必要があります。
dwFlagsメンバにSTARTF_USESTDHANDLESフラグが指定されていない場合には、これらのメンバは無視されます。
GUIプロセスでは、CreateWindow関数またはCreateWindowEx関数で作成され、ShowWindow関数で表示される最初のウィンドウに対してこの構造体で指定される属性が指定されます。コンソールプロセスでは、新しいプロセスでコンソールが作成される場合にコンソールウィンドウに対してこの属性が指定されます。プロセスは、GetStartupInfo関数を使用して、自身のプロセスが作成されたときのSTARTUPINFO構造体を取得することができます。
Windows 95 以降 / Windows NT 3.1 以降
HSP 変数 | メンバ | |||
---|---|---|---|---|
メンバ名 | オフセット | サイズ | ||
stinfo(0) | cb ( = 68 ) | 0 | 4 | |
stinfo(1) | lpReserved | 4 | 4 | |
stinfo(2) | lpDesktop | 8 | 4 | |
stinfo(3) | lpTitle | 12 | 4 | |
stinfo(4) | dwX | 16 | 4 | |
stinfo(5) | dwY | 20 | 4 | |
stinfo(6) | dwXSize | 24 | 4 | |
stinfo(7) | dwYSize | 28 | 4 | |
stinfo(8) | dwXCountChars | 32 | 4 | |
stinfo(9) | dwYCountChars | 36 | 4 | |
stinfo(10) | dwFillAttribute | 40 | 4 | |
stinfo(11) | dwFlags | 44 | 4 | |
stinfo(12) | 下位ワード | wShowWindow | 48 | 2 |
上位ワード | cbReserved2 | 50 | 2 | |
stinfo(13) | lpReserved2 | 52 | 4 | |
stinfo(14) | hStdInput | 56 | 4 | |
stinfo(15) | hStdOutput | 60 | 4 | |
stinfo(16) | hStdError | 64 | 4 |