1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
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; } |