#include #include #include #include int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int CmdShow) { char ProgramName[1024] = "", CommandLine[1024] = ""; char *cr = NULL; FILE *fp; if ((fp = fopen("Repeater.TXT", "r")) == NULL) { MessageBox(NULL, "Repeater.TXT が見つかりません。", "Repeater Error", MB_OK); return 0; } if (fgets(ProgramName, 1024, fp) == NULL){ MessageBox(NULL, "プログラム名を指定してください。", "Repeater Error", MB_OK); fclose(fp); return 0; } if (fgets(CommandLine, 1024, fp) == NULL) strcpy(CommandLine, " "); if ((cr = strchr(ProgramName, '\n')) != NULL) *cr = NULL; if ((cr = strchr(CommandLine, '\n')) != NULL) *cr = NULL; fclose(fp); while(1) { if (_spawnl(_P_WAIT, ProgramName, " ", CommandLine, NULL) == -1) { switch (errno) { case E2BIG: MessageBox(NULL, "引数リストが 1024 バイトを超えています。", "Repeater Error", MB_OK); break; case EINVAL: MessageBox(NULL, "モードの指定が無効です。", "Repeater Error", MB_OK); break; case ENOENT: MessageBox(NULL, "ファイル名またはパス名が見つかりません。", "Repeater Error", MB_OK); break; case ENOEXEC: MessageBox(NULL, "指定されたファイルが実行可能ファイルでないか、実行可能ファイルの形式が不正です。", "Repeater Error", MB_OK); break; case ENOMEM: MessageBox(NULL, "メモリ不足のため子プロセスを実行できません。", "Repeater Error", MB_OK); break; default: MessageBox(NULL, "プログラムを実行できません。", "Repeater Error", MB_OK); } break; } } return 0; }