CreateProcess ひな形

投稿者: | 2017/3/18 土曜日
BOOL mycrepro(LPCTSTR pApp)
{
	STARTUPINFO si = {0};
 
	// The size of the structure, in bytes.
	si.cb = sizeof(si);
 
	// コンソールのタイトル
	// si.lpTitle = NULL;
 
	// ウインドウがデフォルトで作られた時の表示位置、STARTF_USEPOSITIONを指定した場合指定
	// si.dwX=0;
	// si.dwY=0;
 
	// ウインドウがデフォルトでつくられた時のサイズ、STARTF_USESIZEを指定した場合指定
	// si.dwXSize = 0;
	// si.dwYSize = 0;
 
 
	// コンソールのキャラクターバッファ、STARTF_USECOUNTCHARSを指定した場合指定
	// si.dwXCountChars = 0;
	// si.dwYCountChars = 0;
 
 
	// コンソールの文字の色と背景の色、STARTF_USEFILLATTRIBUTEを指定した場合指定
	// si.dwFillAttribute = FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE;
 
	// フラグ(一部)
	si.dwFlags =
		//STARTF_FORCEONFEEDBACK			| // 普通の待機マウスカーソル
		//STARTF_FORCEOFFFEEDBACK			| // 待機マウスカーソルなし
		//STARTF_PREVENTPINNING				| // タスクバーにピンさせない、STARTF_TITLEISAPPIDと共に使う
		//STARTF_RUNFULLSCREEN				| // フルスクリーン、x86コンソールでのみ有効
		//STARTF_TITLEISAPPID				| // lpTitleはAppUserModeIDを設定、タスクバーの同一性情報
		//STARTF_USESHOWWINDOW				| // SW_HIDEとかを指定
		//STARTF_USESTDHANDLES				| // ハンドル継承関係
		0;
 
 
	// ウインドウの表示形態、STARTF_USESHOWWINDOWと共に使う
	// si.wShowWindow = SW_SHOWDEFAULT;
	// si.wShowWindow = SW_HIDE;
 
 
 
 
	// 出力用、設定不要
	PROCESS_INFORMATION pi = {0};
 
 
 
	BOOL bRet = CreateProcess(
		 //LPCTSTR lpApplicationName, 
		 // 実行可能モジュールの名前、NULLでもいい
		pApp,
 
		// LPTSTR lpCommandLine,
		// コマンドラインの文字列、NULLでもいい
		// コンストじゃだめ
		NULL,
 
		// LPSECURITY_ATTRIBUTES lpProcessAttributes,
		// セキュリティ記述子
		NULL,
 
 
		// LPSECURITY_ATTRIBUTES lpThreadAttributes,
		// セキュリティ記述子
		NULL,
 
		// BOOL bInheritHandles,
		// ハンドルの継承オプション
		FALSE,
 
		// DWORD dwCreationFlags, 
		// 作成のフラグ(一部)
		//CREATE_DEFAULT_ERROR_MODE		| // エラーモードを継承しない
		//CREATE_NO_WINDOW			| // コンソールウインドウを表示しない
		//CREATE_SUSPENDED			| // 起動させないでサスペンドする
		//IDLE_PRIORITY_CLASS			| // プロセスの優先順位
		0,
 
		// LPVOID lpEnvironment,
		// 新しい環境ブロック
		NULL,
 
 
		// LPCTSTR lpCurrentDirectory, 
		// カレントディレクトリの名前
		NULL,
 
 
		// LPSTARTUPINFO lpStartupInfo,
		// スタートアップ情報
		&si,
 
 
		// LPPROCESS_INFORMATION lpProcessInformation
		// プロセス情報
		&pi
	);
 
	if(!bRet)
	{
		DWORD dwLE = GetLastError();
		return 0;
	}
 
	// ハンドルを閉じる
	CloseHandle(pi.hThread);
	CloseHandle(pi.hProcess);
 
 
	return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です