<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen??]]></title><description><![CDATA[<p>hi unten mal ein stück code<br />
ich will eigentlich nur die cmd öffnen und erstmal die ausgabe von der in meine winapi anwendung umleiten ... die andere richtung müsste dann ja analog laufen ...</p>
<p>aber irgend was scheine ich noch zu vergssen?! jedenfalls kommt bei readfile nix raus ... er zeigt gleich &quot;ende&quot; an</p>
<p>achja den passenden MSDN artikel kenne ich ...<br />
aber ehrlichgesagt bringt mir da</p>
<p><a href="http://win32asm.cjb.net/" rel="nofollow">http://win32asm.cjb.net/</a></p>
<p>und da das asm-tutorial zu pipes mehr<br />
aber irgend was scheine ich zu vergessen?! ...</p>
<p>bitte daher um hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>danke + cu</p>
<p>error</p>
<p>edit: habs gefunden ... arg!!! natürlich muss das False in creatprocess auf true ... man soas dummes!!... voll übersehen ...</p>
<p>danke(im code auch geändert!!</p>
<pre><code class="language-cpp">PAINTSTRUCT ps;
	HDC hdc;

  char buffer[1024];
  DWORD bytesRead;

  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  SECURITY_ATTRIBUTES  sa;

  HANDLE hread, hwrite;

  std::string tmp=&quot;&quot;;

      hdc= BeginPaint(hWnd,&amp;ps);

      sa.bInheritHandle= true;
      sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
      sa.lpSecurityDescriptor = NULL;

      if(!CreatePipe(&amp;hread,&amp;hwrite,&amp;sa,0))
      {
        TextOut(hdc,100,100,TEXT(&quot;Fehler beim Erstellen der Pipe&quot;),30);
        EndPaint(hWnd,&amp;ps);
        return -1;
      }

      si.cb = sizeof(STARTUPINFO);
      GetStartupInfo(&amp;si);      
      si.hStdOutput= hwrite;
      si.hStdError=hwrite;
      si.dwFlags = STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES;
      si.wShowWindow = SW_SHOW;
      //ZeroMemory( &amp;pi, sizeof(pi) );

      if( !CreateProcess(TEXT(&quot;c:\\Windows\\system32\\cmd.exe&quot;), NULL , NULL, NULL, TRUE, 0, NULL, NULL, &amp;si, &amp;pi ))   
      {
        TextOut(hdc,100,500,TEXT(&quot;Fehler beim Erstellen des Prozesses&quot;),35);
        EndPaint(hWnd,&amp;ps);
        return -1;
      }

      CloseHandle(hwrite);

      while(true)
      {
        RtlZeroMemory(&amp;buffer,1024);
        if(!ReadFile(hread,&amp;buffer,1023,&amp;bytesRead,NULL))
        {
          TextOut(hdc,200,400,TEXT(&quot;ende&quot;),4);
          break;
        }

        TextOut(hdc,200,100,TEXT(&quot;start&quot;),5);
        tmp+=buffer;
      }

      CloseHandle(hread);
      EndPaint(hWnd,&amp;ps);

      // Close process and thread handles. 
      CloseHandle( pi.hProcess );
      CloseHandle( pi.hThread );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/132938/problem-e-mit-pipe-s-umleitung-der-ausgabe-readfile-list-nicht-irgend-was-vergessen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 17:28:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132938.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jan 2006 10:24:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen?? on Sat, 14 Jan 2006 10:29:11 GMT]]></title><description><![CDATA[<p>hi unten mal ein stück code<br />
ich will eigentlich nur die cmd öffnen und erstmal die ausgabe von der in meine winapi anwendung umleiten ... die andere richtung müsste dann ja analog laufen ...</p>
<p>aber irgend was scheine ich noch zu vergssen?! jedenfalls kommt bei readfile nix raus ... er zeigt gleich &quot;ende&quot; an</p>
<p>achja den passenden MSDN artikel kenne ich ...<br />
aber ehrlichgesagt bringt mir da</p>
<p><a href="http://win32asm.cjb.net/" rel="nofollow">http://win32asm.cjb.net/</a></p>
<p>und da das asm-tutorial zu pipes mehr<br />
aber irgend was scheine ich zu vergessen?! ...</p>
<p>bitte daher um hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>danke + cu</p>
<p>error</p>
<p>edit: habs gefunden ... arg!!! natürlich muss das False in creatprocess auf true ... man soas dummes!!... voll übersehen ...</p>
<p>danke(im code auch geändert!!</p>
<pre><code class="language-cpp">PAINTSTRUCT ps;
	HDC hdc;

  char buffer[1024];
  DWORD bytesRead;

  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  SECURITY_ATTRIBUTES  sa;

  HANDLE hread, hwrite;

  std::string tmp=&quot;&quot;;

      hdc= BeginPaint(hWnd,&amp;ps);

      sa.bInheritHandle= true;
      sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
      sa.lpSecurityDescriptor = NULL;

      if(!CreatePipe(&amp;hread,&amp;hwrite,&amp;sa,0))
      {
        TextOut(hdc,100,100,TEXT(&quot;Fehler beim Erstellen der Pipe&quot;),30);
        EndPaint(hWnd,&amp;ps);
        return -1;
      }

      si.cb = sizeof(STARTUPINFO);
      GetStartupInfo(&amp;si);      
      si.hStdOutput= hwrite;
      si.hStdError=hwrite;
      si.dwFlags = STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES;
      si.wShowWindow = SW_SHOW;
      //ZeroMemory( &amp;pi, sizeof(pi) );

      if( !CreateProcess(TEXT(&quot;c:\\Windows\\system32\\cmd.exe&quot;), NULL , NULL, NULL, TRUE, 0, NULL, NULL, &amp;si, &amp;pi ))   
      {
        TextOut(hdc,100,500,TEXT(&quot;Fehler beim Erstellen des Prozesses&quot;),35);
        EndPaint(hWnd,&amp;ps);
        return -1;
      }

      CloseHandle(hwrite);

      while(true)
      {
        RtlZeroMemory(&amp;buffer,1024);
        if(!ReadFile(hread,&amp;buffer,1023,&amp;bytesRead,NULL))
        {
          TextOut(hdc,200,400,TEXT(&quot;ende&quot;),4);
          break;
        }

        TextOut(hdc,200,100,TEXT(&quot;start&quot;),5);
        tmp+=buffer;
      }

      CloseHandle(hread);
      EndPaint(hWnd,&amp;ps);

      // Close process and thread handles. 
      CloseHandle( pi.hProcess );
      CloseHandle( pi.hThread );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/966193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966193</guid><dc:creator><![CDATA[ERROR]]></dc:creator><pubDate>Sat, 14 Jan 2006 10:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen?? on Sat, 14 Jan 2006 15:11:18 GMT]]></title><description><![CDATA[<p>Nur noch als Anmerkung:<br />
Erstze: &quot;STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES&quot; durch</p>
<pre><code class="language-cpp">STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES
</code></pre>
<p>Und Du hast noch vergessen das &quot;hStdInput&quot; zu setzen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966424</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 14 Jan 2006 15:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen?? on Sat, 14 Jan 2006 15:46:11 GMT]]></title><description><![CDATA[<p>jo danke</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966465</guid><dc:creator><![CDATA[ERROR]]></dc:creator><pubDate>Sat, 14 Jan 2006 15:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen?? on Sat, 14 Jan 2006 16:36:50 GMT]]></title><description><![CDATA[<p>hi</p>
<p>also ich habs ja nun geschafft auszulesen, doch schaff ich es nicht auch was an die cmd zu schicken, um dann das ergebnis auszulesen beispielesweise &quot;dir&quot;</p>
<p>wie muss ich jetzt vorgehen??</p>
<p>also ich dachte mir ich brauche dafür eine neue pipe(siehe neue pipe)<br />
und die hänge ich an hStdInput an ?! ...</p>
<p>soweit richtig??</p>
<p>dann hätte ich gedacht, dass ich mit WriteFile(..) der console schicken könnte sie soll &quot;ir&quot; machen</p>
<p>also als zeichenkette wohl &quot;dir\n&quot; bei WriteFile(..) um auch gleich das ENTER bei zu haben</p>
<p>und wenn ich dann erneut mit readfile auslese hätte ich gedacht, müsste ich die ausgabe von &quot;dir&quot; erhalten</p>
<p>naja hat jedenfalls nicht geklappt ...</p>
<p>also wo liegt mein denkfehler, bzw. wie müsste ich den code ergänzen/ändern??</p>
<p>danke + cu</p>
<p>error</p>
<pre><code class="language-cpp">unsigned long bio;   //bytes in/out

  static HWND hwndEdit;
  char buf[1024];           //in buffer
  char buffer[]=&quot;dir\n&quot;;           //out buffer

  char app[] = &quot;cmd.exe&quot;; 

  STARTUPINFO si;
  SECURITY_ATTRIBUTES sa;
  PROCESS_INFORMATION pi;
  HANDLE read, newread, write, newwrite;  //pipe handles

    case WM_LBUTTONDOWN:
    sa.lpSecurityDescriptor = NULL;
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = true;

    //Pipe um vom Child zu lesen
    if(!CreatePipe(&amp;newread,&amp;read,&amp;sa,0))
    {
      MessageBox(hWnd,TEXT(&quot;CreatePipe&quot;),TEXT(&quot;FEHLER&quot;),0);
      CloseHandle(read);
      CloseHandle(newread);
      return -1;
    }

    //neue pipe
    //Pipe um in Child zu schreiben
    if(!CreatePipe(&amp;newwrite,&amp;write,&amp;sa,0))
    {
      MessageBox(hWnd,TEXT(&quot;CreatePipe&quot;),TEXT(&quot;FEHLER&quot;),0);
      CloseHandle(write);
      CloseHandle(newwrite);
      return -1;
    }

    si.cb = sizeof(STARTUPINFO);
    GetStartupInfoA(&amp;si);      
    si.hStdOutput= read;
    si.hStdError=read;
    si.hStdInput=write;
    si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
    si.wShowWindow = SW_SHOW;

    //child process erzeugen
    if (!CreateProcess(NULL,app,NULL,NULL,TRUE,NULL,NULL,NULL,&amp;si,&amp;pi))
    {
      MessageBox(hWnd,TEXT(&quot;CreateProcess&quot;),TEXT(&quot;FEHLER&quot;),0);
      CloseHandle(read);
      CloseHandle(newread);
      CloseHandle(write);
      CloseHandle(newwrite);
      return -1;
    }

    //nicht mehr benötigt? endlosschleife wenn nicht geschlossen!!!???
    CloseHandle(read);
    CloseHandle(write);

    //hier lesen wir aus der cmd
    while(true)
    {
      RtlZeroMemory(&amp;buf,1024);

      if(ReadFile(newread,&amp;buf,1023,&amp;bio,NULL)==NULL)break;

      SendMessage(hwndEdit,EM_SETSEL,-1,0);
      SendMessage(hwndEdit,EM_REPLACESEL,FALSE,(LPARAM)buf); 
    }

    //jetzt wollen wir dir an die cmd schicken

    WriteFile(newwrite,&amp;buffer, 10,&amp;bio,NULL);

    //und das ergebnis wieder lesen

    //hier lesen wir dann wieder aus der cmd
    while(true)
    {
      RtlZeroMemory(&amp;buf,1024);

      if(ReadFile(newread,&amp;buf,1023,&amp;bio,NULL)==NULL)break;

      SendMessage(hwndEdit,EM_SETSEL,-1,0);
      SendMessage(hwndEdit,EM_REPLACESEL,FALSE,(LPARAM)buf); 
    }

    //den Rest aufräumen
    CloseHandle(newread);
    CloseHandle(newwrite);

    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/966519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966519</guid><dc:creator><![CDATA[ERROR]]></dc:creator><pubDate>Sat, 14 Jan 2006 16:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to problem(e) mit pipe(s) + umleitung der ausgabe ... readfile list nicht ... irgend was vergessen?? on Mon, 16 Jan 2006 15:05:07 GMT]]></title><description><![CDATA[<p>hm sorry, aber es ist mir noch immer nicht klar, wie ich das mit dem schreiben machen muss ... jedenfalls geht das so wie oben dargestellt nicht</p>
<p>danke für aufklärung</p>
<p>cu</p>
<p>error</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968133</guid><dc:creator><![CDATA[ERROR]]></dc:creator><pubDate>Mon, 16 Jan 2006 15:05:07 GMT</pubDate></item></channel></rss>