최근 포토로그


리다이렉션 - PING 프로그램의 출력을 파일출력또는 윈도우에 출력하기. MFC

   hEdit=CreateWindow("edit","",
       WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE,
       10,10,500,500,hwnd,(HMENU)1,0,0);

   PROCESS_INFORMATION pi={0};
   // ping 출력을 redirect할 파일 생성.
   HANDLE hFile=CreateFile("a.txt",GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    0,
    CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
   //모든 KO는 기본적으로 상속 불가능 하다.
   //특정 KO를 상속가능하게 변경한다.
   SetHandleInformation(hFile,HANDLE_FLAG_INHERIT,// 상속가능 여부를
    HANDLE_FLAG_INHERIT); //상속 가능하게.
   //------------------------------------------------------------------------
   STARTUPINFO si={0};
   si.cb=sizeof(si);
   si.hStdOutput=hFile; //ping의 stdout과 연결할 파일
   si.dwFlags   =STARTF_USESTDHANDLES;

   BOOL b=CreateProcess(0,"ping.exe www.ibmc.com",0,0,TRUE,
    CREATE_NO_WINDOW, //flag. console 을 판들지 말라.
    0,0,&si,&pi);
   if(b)
   {
    // ping이 종료 될때까지 대기한다.
    WaitForSingleObject(pi.hProcess, INFINITE);
 
    // a.txt에서 모든 data를 읽어서 edit에 출력한다.
    char s[4096] = {0};
 
    SetFilePointer(hFile, 0, 0, FILE_BEGIN); // 파일포인터를 제일 앞으로..
 
    DWORD len;
    ReadFile(hFile, s, 4096, &len, 0);
 
    SetWindowText(hEdit, s);
    CloseHandle(hFile);
    //==================================================================//
 
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
   }
  }
//-----------------------------여기까지 파일에 연결하는 소스-------------------------------


   HANDLE hRead, hWrite;
   CreatePipe(&hRead, &hWrite, 0, 1024);

   SetHandleInformation(hWrite, HANDLE_FLAG_INHERIT,
    HANDLE_FLAG_INHERIT);

   PROCESS_INFORMATION pi = {0};

   STARTUPINFO si = {0};

   si.cb = sizeof(si);
   si.hStdOutput = hWrite; // 쓰기 위한 파이프 핸들을 자식의 표준출력으로...
   si.dwFlags = STARTF_USESTDHANDLES;

   BOOL b = CreateProcess(0, "ping.exe www.imbc.com", 0, 0, TRUE,
    CREATE_NO_WINDOW, 0, 0, &si, &pi);

   if(b)
   {
    CloseHandle(hWrite); // 쓰기 위한 핸들은 필요 없다.
 
    DWORD len;
 
    while(1)
    {
     char s[4096] = {0};
     BOOL bRet = ReadFile(hRead, s, 4096, &len, 0);
  
     if(bRet == FALSE)
      break;  // 파이프가 닫힌 경우
  
     // SetWindowText()를 사용하면 기존의 edit data가 지어ㅜ지고
     // 새롭게 추가된다.. - 한줄씩 덧붙이려면!
     SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)s);
    }
    CloseHandle(hRead);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
   }
  }

덧글

  • 두바이 2016/04/24 23:54 # 삭제 답글

    과,중,한, ,스,트,레,스,와,
    우,울,증,.,,기,분,전,환,에, ,쎅,스,는, ,최고,죠,~,
    ,2,0,대, ,초,반, ,중,반, ,언,,니,,,들, ,2,4,시, 완,벽,준,비,~,!,!
    ,서,비,스,-,S,M노,예,/,컨,셥,놀,이,/,입사,/,질,사,,,/,안,,.,마,등,등,

    장,소,만, ,알,려,주,시,면, ,직,접, ,찾,아가,는, ,서,,비,스,~,
    ,착한 ,가,,,격,에 ,지,방,까,지, ,고,고,.,.,일,일,,대,,기 !~

    ,자,세,한, ,문,의는, ,톡,",d,.,u,,,b.,,a,,,,i,.,,8,8,8

    [,,1,9,금,], ,d,u,b,a,,i,3,4,.n,e,,,t

    ,상,담,환,영, ,친,절,히, ,답,해드,려,요,!,
    답,변,이, ,늦,을, ,수,있,는,점, ,양,해, ,부,탁,드,립,,니,다

    <img alt="dubai34.jpg" src="http://www.medwide.net/files/attach/images/2858877/360/337/009/765ff3af4def6f0aae7642644fa24e4f.jpg">


    모,,두,의,<,두,,,바,,,이,,,출,,장,샵> 입니다
    두,바,이,의, ,현재, ,주,소,는, ,d ,u, ,b ,a, ,i, ,3, ,4, ,. n ,e, t 입니다
    두,,바,,이,의, ,다,음, ,주,소,는, ,d, ,u, b, ,a, i 3 5 . n ,e, ,t 입니다
    그,러,타,면, ,그, ,다,음,주,소,는,?,?,
    d, ,u, b, ,a, i ,3 7 . n,, e,, t 입니다 ^^

    이,는, 추,후,에, ,저,희, ,사,이,트,가,, ,블,라,인,드, ,되,었을 경우
    뒤,에 숫,자,만, ,계,속, ,변,경,하,시,면, ,됩,니,다, ,,위,의, ,사,이,트,로, ,오,시,면
    정상적으로 사이트를 이용하실 수 있습니다
    틱,k,a,톡,:,d,.,u,,,b,.,a,,i.8,8,8 ♬
    트,위,터,로, ,오,시,면, 수,시,로,, 바,뀔, 수 있,는 저,희 사,,이,트의 실,,시,간,정,보,를
    보,실 ,수 ,있,습,니,다,.
댓글 입력 영역