|
>pieさん、ご教授ありがとうございます。
>しかし、残念ながら・・・
うまくいかなかったんですか?
>FILE *stream;
>stream = freopen("OUTPUT.txt", "w", stdout);
>fclose(stream);
>ってことですか?
そうです。
>もしよろしければ、ソース載せていただけないでしょうか?
>嘆かわしいお願いですがよろしくお願いします。
いや、ですからGetStdHandleをfreopenの後にしただけですけど。
#include <windows.h>
#include <stdio.h>
int main( int argc, char *argv[] ){
STARTUPINFO si;
PROCESS_INFORMATION pi;
FILE* fpredir;
if (argc == 2) {
if (( fpredir = freopen("OUTPUT.txt", "w", stdout)) == NULL){
fprintf(stderr, "標準出力へのリダイレクトエラー\n");
}
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = STARTF_USESTDHANDLES;
si.cbReserved2= 0;
si.lpReserved2= NULL;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
if(CreateProcess( NULL,argv[1], NULL, NULL, TRUE, 0, NULL, NULL,&si, &pi)){
printf("起動に成功\n");
}else {
printf("起動に失敗\n");
}
printf("\n終了\n");
fclose(fpredir);
}
return 0;
}
|