次の方法で共有


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 STARTF_USEPOSITIONを指定する場合、新しいウィンドウが作成された場合、このメンバーはウィンドウの左上隅の x オフセット (ピクセル単位) になります。 それ以外の場合、このメンバーは無視されます。

オフセットは画面の左上隅からの値です。 GUI プロセスの場合、CreateWindow の x パラメーターがCW_USEDEFAULTされている場合、新しいプロセス CreateWindow を初めて呼び出して重複するウィンドウ 作成する際に、指定した位置が使用されます。

dwY

dwFlags STARTF_USEPOSITIONを指定する場合、このメンバーは、新しいウィンドウが作成された場合のウィンドウの左上隅の y オフセット (ピクセル単位) です。 それ以外の場合、このメンバーは無視されます。

オフセットは画面の左上隅からの値です。 GUI プロセスの場合、CreateWindow の y パラメーターがCW_USEDEFAULTされている場合、新しいプロセス CreateWindow を初めて呼び出して重複するウィンドウ 作成する際に、指定した位置が使用されます。

dwXSize

dwFlags STARTF_USESIZEを指定する場合、このメンバーは、新しいウィンドウが作成された場合のウィンドウの幅 (ピクセル単位) です。 それ以外の場合、このメンバーは無視されます。

GUI プロセスの場合、これは、CreateWindow の nWidth パラメーターがCW_USEDEFAULTされている場合に、新しいプロセス CreateWindow を初めて呼び出して重複するウィンドウ 作成する場合にのみ使用されます。

dwYSize

dwFlags STARTF_USESIZEを指定する場合、このメンバーは、新しいウィンドウが作成された場合のウィンドウの高さ (ピクセル単位) です。 それ以外の場合、このメンバーは無視されます。

GUI プロセスの場合、これは、CreateWindow nHeight パラメーターがCW_USEDEFAULTされている場合に、新しいプロセスが CreateWindow 初めて呼び出して重複するウィンドウを作成する場合にのみ使用されます。

dwXCountChars

dwFlags STARTF_USECOUNTCHARSを指定した場合、コンソール プロセスで新しいコンソール ウィンドウが作成された場合、このメンバーは画面バッファーの幅を文字列で指定します。 それ以外の場合、このメンバーは無視されます。

dwYCountChars

dwFlags STARTF_USECOUNTCHARSを指定した場合、コンソール プロセスで新しいコンソール ウィンドウが作成された場合、このメンバーは画面バッファーの高さを文字行で指定します。 それ以外の場合、このメンバーは無視されます。

dwFillAttribute

dwFlags STARTF_USEFILLATTRIBUTEを指定した場合、コンソール アプリケーションで新しいコンソール ウィンドウが作成された場合、このメンバーは初期テキストと背景色になります。 それ以外の場合、このメンバーは無視されます。

この値は、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 メンバー 特定の を使用するかどうかを決定するビットフィールド。 このメンバーには、次の値のうち 1 つ以上を指定できます。

価値 意味
STARTF_FORCEONFEEDBACK
0x00000040
CreateProcess が呼び出された後、カーソルが 2 秒間フィードバック モード 示します。 [バックグラウンドで作業] カーソルが表示されます (マウス コントロール パネル ユーティリティの [ポインター] タブを参照)。

この 2 秒の間にプロセスが最初の GUI 呼び出しを行うと、システムはプロセスにさらに 5 秒を与えます。 この 5 秒の間にプロセスにウィンドウが表示される場合、システムはウィンドウの描画を完了するプロセスにさらに 5 秒を与えます。

プロセスが描画されているかどうかに関係なく、GetMessage最初の呼び出しの後、システムはフィードバック カーソルをオフにします。

STARTF_FORCEOFFFEEDBACK
0x00000080
プロセスの開始時にフィードバック カーソルが強制的にオフになっていることを示します。 [標準選択] カーソルが表示されます。
STARTF_PREVENTPINNING
0x00002000
プロセスによって作成されたウィンドウをタスク バーにピン留めできないことを示します。

このフラグは、STARTF_TITLEISAPPIDと組み合わせる必要があります。

STARTF_RUNFULLSCREEN
0x00000020
ウィンドウ モードではなく、全画面表示モードでプロセスを実行する必要があることを示します。

このフラグは、x86 コンピューターで実行されているコンソール アプリケーションでのみ有効です。

STARTF_TITLEISAPPID
0x00001000
lpTitle メンバーには、AppUserModelID が含まれています。 この識別子は、タスク バーと スタート メニューがアプリケーションを表示する方法を制御し、適切なショートカットとジャンプ リストに関連付けできるようにします。 一般に、アプリケーションでは、このフラグを設定する代わりに、SetCurrentProcessExplicitAppUserModelIDと GetCurrentProcessExplicitAppUserModelID 関数を使用します。 詳細については、「アプリケーション ユーザー モデル ID」を参照してください。

STARTF_PREVENTPINNINGを使用している場合、アプリケーション ウィンドウをタスク バーにピン留めすることはできません。 アプリケーションで AppUserModelID 関連のウィンドウ プロパティを使用すると、そのウィンドウに対してのみこの設定がオーバーライドされます。

このフラグは、STARTF_TITLEISLINKNAMEでは使用できません。

STARTF_TITLEISLINKNAME
0x00000800
lpTitle メンバーには、ユーザーがこのプロセスを開始するために呼び出したショートカット ファイル (.lnk) のパスが含まれています。 これは通常、起動されたアプリケーションを指す.lnk ファイルが呼び出されたときにシェルによって設定されます。 ほとんどのアプリケーションでは、この値を設定する必要はありません。

このフラグは、STARTF_TITLEISAPPIDでは使用できません。

STARTF_UNTRUSTEDSOURCE
0x00008000
コマンド ラインは信頼されていないソースから来ました。 詳細については、「解説」を参照してください。
STARTF_USECOUNTCHARS
0x00000008
dwXCountChars および dwYCountChars メンバー 追加情報が含まれています。
STARTF_USEFILLATTRIBUTE
0x00000010
dwFillAttribute メンバーには追加情報が含まれています。
STARTF_USEHOTKEY
0x00000200
hStdInput メンバーには追加情報が含まれています。

このフラグは、STARTF_USESTDHANDLESでは使用できません。

STARTF_USEPOSITION
0x00000004
dwX および dwY メンバーには、追加情報が含まれています。
STARTF_USESHOWWINDOW
0x00000001
wShowWindow メンバーには追加情報が含まれています。
STARTF_USESIZE
0x00000002
dwXSize メンバーと dwYSize メンバー 追加情報が含まれています。
STARTF_USESTDHANDLES
0x00000100
hStdInput、hStdOutput、および hStdError メンバー 追加情報が含まれています。

プロセス作成関数のいずれかを呼び出すときにこのフラグを指定する場合、ハンドルは継承可能で、関数の bInheritHandles パラメーターを TRUE に設定する必要があります。 詳細については、「継承処理する」を参照してください。

GetStartupInfo 関数の呼び出し時にこのフラグを指定した場合、これらのメンバーは、プロセスの作成時に指定されたハンドル値またはINVALID_HANDLE_VALUEのいずれかになります。

ハンドルは、必要なくなったときに、CloseHandle で閉じる必要があります。

このフラグは、STARTF_USEHOTKEYでは使用できません。

wShowWindow

dwFlags STARTF_USESHOWWINDOWを指定する場合、このメンバーは、SW_SHOWDEFAULTを除き、ShowWindow 関数の nCmdShow パラメーターで指定できる任意の値にすることができます。 それ以外の場合、このメンバーは無視されます。

GUI プロセスの場合、ShowWindow 初めて呼び出されると、その nCmdShow パラメーターは無視 、wShowWindow は既定値を指定します。 ShowWindowの後続の呼び出しでは、showWindow の nCmdShow パラメーターが SW_SHOWDEFAULT に設定されている場合、wShowWindow メンバー 使用されます。

cbReserved2

C ランタイムで使用するために予約されています。は 0 にする必要があります。

lpReserved2

C ランタイムで使用するために予約されています。は NULL である必要があります。

hStdInput

dwFlags STARTF_USESTDHANDLESを指定する場合、このメンバーはプロセスの標準入力ハンドルです。 STARTF_USESTDHANDLESが指定されていない場合、標準入力の既定値はキーボード バッファーです。

dwFlags STARTF_USEHOTKEYを指定する場合、このメンバーは、WM_SETHOTKEY メッセージの wParam パラメーターとして、プロセスを所有するアプリケーションによって作成された最初の有効な最上位ウィンドウに送信されるホットキー値を指定します。 WS_POPUP ウィンドウ スタイルを使用してウィンドウを作成した場合、WS_EX_APPWINDOW拡張ウィンドウ スタイルも設定されていない限り、そのウィンドウは使用できません。 詳細については、「CreateWindowExを参照してください。

それ以外の場合、このメンバーは無視されます。

hStdOutput

dwFlags STARTF_USESTDHANDLESを指定する場合、このメンバーはプロセスの標準出力ハンドルです。 それ以外の場合、このメンバーは無視され、標準出力の既定値はコンソール ウィンドウのバッファーです。

タスク バーまたはジャンプ リストからプロセスが起動された場合、システムは hStdOutput 、プロセスの起動に使用されるタスク バーまたはジャンプ リストを含むモニターへのハンドルに設定します。 詳細については、「解説」を参照してください。Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008、Windows XP、Windows Server 2003: この動作は、Windows 8 および Windows Server 2012 で導入されました。

hStdError

dwFlags STARTF_USESTDHANDLESを指定する場合、このメンバーはプロセスの標準エラー ハンドルです。 それ以外の場合、このメンバーは無視され、標準エラーの既定値はコンソール ウィンドウのバッファーです。

備考

グラフィカル ユーザー インターフェイス (GUI) プロセスの場合、この情報は、CreateWindow 関数によって作成され、ShowWindow 関数によって表示される最初のウィンドウに影響します。 コンソール プロセスの場合、この情報は、プロセス用に新しいコンソールが作成された場合にコンソール ウィンドウに影響します。 プロセスは、GetStartupInfo 関数を使用して、プロセスの作成時に指定された STARTUPINFO 構造体を取得できます。

GUI プロセスが開始されていて、STARTF_FORCEONFEEDBACKもSTARTF_FORCEOFFFEEDBACKも指定されていない場合は、プロセス・フィードバック・カーソルが使用されます。 GUI プロセスは、サブシステムが "windows" として指定されているプロセスです。

タスク バーまたはジャンプ リストからプロセスが起動された場合、システムは GetStartupInfo を設定して、STARTUPINFO 構造を取得し、hStdOutput 設定されていることを確認します。 その場合は、GetMonitorInfo を使用して、hStdOutput が有効なモニター ハンドル (HMONITOR) であるかどうかを確認します。 その後、プロセスはハンドルを使用してウィンドウを配置できます。

STARTF_UNTRUSTEDSOURCE フラグが指定されている場合、アプリケーションはコマンド ラインが信頼されていないことを認識する必要があります。 このフラグが設定されている場合、アプリケーションはマクロ、ダウンロードされたコンテンツ、自動印刷などの潜在的に危険な機能を無効にする必要があります。 このフラグは省略可能ですが、CreateProcess 呼び出すアプリケーションは、信頼されていないコマンド ライン引数 (Web コンテンツによって提供されるものなど) を使用してプログラムを起動するときにこのフラグを設定して、新しく作成されたプロセスが適切なポリシーを適用できるようにすることをお勧めします。

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 の