<?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[in die cmd.exe (Konsole) schreiben]]></title><description><![CDATA[<p>hy, ich hab ein problem mit der cmd.exe ich möchte diese aus einer MFC Anwendung aus<br />
starten und etwas in sie hineinschreiben.</p>
<p>das mit dem starten klapt so bedingt nur das hineinschreiben will überhaupt nicht klappen. (glaub ich zumindest)<br />
ich hab mich da an einem beispiel von codeproject orientiert.<br />
<a href="http://www.codeproject.com/cpp/9505Yamaha_1.asp" rel="nofollow">http://www.codeproject.com/cpp/9505Yamaha_1.asp</a></p>
<p>dort wird das auslesen einer consolenanwendung beschrieben. das auslesen aus der cmd.exe klapt auch<br />
nur umgekehrt nicht.</p>
<p>das was ich bisher versucht hab ist mit den rPipe &amp; wPipe ein bischen rumzuspielen und gegeneinander<br />
auszutauschen. Auch würde ich gern das die cmd.exe aufbleibt wenn ich den process erstelle.<br />
nur wenn ich den flag STARTF_USESTDHANDLES übergeben schliest sich die exe sofort wieder.<br />
wenn ich den flag weglass bleibt sie dauerhaft offen bis ich sie schließe, nur hab ich dann<br />
ja kein zugriff mehr auf die hStd... an die ich die Pipes übergebe.</p>
<p>andere seits öffnet und schließt sich die cmd.exe so schnell das ich mit dem flag STARTF_USESTDHANDLES<br />
gar nicht kontrollieren kann ob ich etwas erfolgreich hinein geschrieben hab.</p>
<p>weis da jemand rat?</p>
<pre><code>STARTUPINFO sInfo; 
.....
sInfo.dwFlags= STARTF_USESTDHANDLES;//
sInfo.hStdInput=wPipe; 
sInfo.hStdOutput=rPipe; 
sInfo.hStdError=rPipe;

CloseHandle(rPipe);

char buf[100] = &quot;Das soll in die cmd.exe&quot;;

res=::WriteFile(wPipe,buf,100,&amp;reDword,0);
</code></pre>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159729/in-die-cmd-exe-konsole-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 16:15:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159729.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Sep 2006 12:52:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Mon, 18 Sep 2006 12:53:53 GMT]]></title><description><![CDATA[<p>hy, ich hab ein problem mit der cmd.exe ich möchte diese aus einer MFC Anwendung aus<br />
starten und etwas in sie hineinschreiben.</p>
<p>das mit dem starten klapt so bedingt nur das hineinschreiben will überhaupt nicht klappen. (glaub ich zumindest)<br />
ich hab mich da an einem beispiel von codeproject orientiert.<br />
<a href="http://www.codeproject.com/cpp/9505Yamaha_1.asp" rel="nofollow">http://www.codeproject.com/cpp/9505Yamaha_1.asp</a></p>
<p>dort wird das auslesen einer consolenanwendung beschrieben. das auslesen aus der cmd.exe klapt auch<br />
nur umgekehrt nicht.</p>
<p>das was ich bisher versucht hab ist mit den rPipe &amp; wPipe ein bischen rumzuspielen und gegeneinander<br />
auszutauschen. Auch würde ich gern das die cmd.exe aufbleibt wenn ich den process erstelle.<br />
nur wenn ich den flag STARTF_USESTDHANDLES übergeben schliest sich die exe sofort wieder.<br />
wenn ich den flag weglass bleibt sie dauerhaft offen bis ich sie schließe, nur hab ich dann<br />
ja kein zugriff mehr auf die hStd... an die ich die Pipes übergebe.</p>
<p>andere seits öffnet und schließt sich die cmd.exe so schnell das ich mit dem flag STARTF_USESTDHANDLES<br />
gar nicht kontrollieren kann ob ich etwas erfolgreich hinein geschrieben hab.</p>
<p>weis da jemand rat?</p>
<pre><code>STARTUPINFO sInfo; 
.....
sInfo.dwFlags= STARTF_USESTDHANDLES;//
sInfo.hStdInput=wPipe; 
sInfo.hStdOutput=rPipe; 
sInfo.hStdError=rPipe;

CloseHandle(rPipe);

char buf[100] = &quot;Das soll in die cmd.exe&quot;;

res=::WriteFile(wPipe,buf,100,&amp;reDword,0);
</code></pre>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139569</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 18 Sep 2006 12:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Mon, 18 Sep 2006 14:47:34 GMT]]></title><description><![CDATA[<p>Dazu musst Du gar nichts spezielles machen, oder ich habe Deine Bschreibung nicht verstanden.</p>
<p>Erzeuge ein normales Consolen Programm das stdout beschreibt. Starte dieses per CreateProcess und es wird ein entsprechendes Konsolenfenster angezeigtin das die Ausgaben geschrieben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139694</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 18 Sep 2006 14:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Mon, 18 Sep 2006 15:03:37 GMT]]></title><description><![CDATA[<p>ja eben soweit bin ich auch und mein nächster schritt wäre eben für den benutzer etwas hineinzuschreiben was er ansonsten hineintippen müsste.</p>
<p>das hineinschreiben soll aus der mfc anwendung passieren.<br />
[New Edit]<br />
und der witz ist eben wenn ich mit dem Flag STARTF_USESTDHANDLES starte was ich ja muss um aus der anwendung lesen bzw. schreiben zu können. schliesst die cmd.exe gleich wieder.</p>
<p>ohne den Flag STARTF_USESTDHANDLES bleibt sie zwar offen aber mir stehn die variablen zur übergabe der Pipes nicht zur verfühgung.</p>
<p>LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139710</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 18 Sep 2006 15:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Mon, 18 Sep 2006 16:15:41 GMT]]></title><description><![CDATA[<p>In diesem Fall muss der entsprechende Prozess nur stdin lesen. CreateProzess.</p>
<p>Entsprechendes findest Du hier dokumentiert:<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139777</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 18 Sep 2006 16:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Tue, 19 Sep 2006 10:06:27 GMT]]></title><description><![CDATA[<p>hab da jetzt mal ein bischen rumprobiert mit dem ergebniss das jetzt zumindest mal die console offen bleibt.</p>
<p>leider kann ich nix eingeben weder schreibt es mir den text den es in die konsole schreiben soll hinein noch kann ich über die tastatur eingaben in die konsole machen</p>
<p>mein code sieht wie folgt aus.</p>
<pre><code>//Formatiert neuen String fügt Pfad der Consolenanwendung &amp; Argumente zusammen
	char cExecute[4096];
	char cArguments[4096];
	char cLongExecute[8192];
	strcpy(cExecute,lpExecute);
	strcpy(cArguments,lpArguments);
	sprintf(cLongExecute,&quot;%s %s&quot;,cExecute,cArguments);

	//Erstelle Sicherheitsattribute zum erstellen der Anwendung
	SECURITY_ATTRIBUTES secattr; 
	ZeroMemory(&amp;secattr,sizeof(secattr));
	secattr.nLength			= sizeof(secattr);
	secattr.bInheritHandle	= TRUE;		//	secattr.lpSecurityDescriptor = NULL; 

	HANDLE hChildStdinRd, hChildStdinWr,  
	hChildStdoutRd, hChildStdoutWr; 

	//Erstelle die Speiseleitung zum lesen und schreiben in die Console
	CreatePipe(&amp;hChildStdoutRd,&amp;hChildStdoutWr,&amp;secattr,0);
	SetHandleInformation( hChildStdoutRd, HANDLE_FLAG_INHERIT, 0);//

	//Erstelle die Speiseleitung zum lesen und schreiben in die Console
	CreatePipe(&amp;hChildStdinRd,&amp;hChildStdinWr,&amp;secattr,0);
	SetHandleInformation( hChildStdinWr, HANDLE_FLAG_INHERIT, 0);//

	//Processinformationen zum zerstöhren der Anwendung
	PROCESS_INFORMATION pInfo; 
	ZeroMemory(&amp;pInfo,sizeof(pInfo));

	//Erstelle die Startinformationen für das Consolenfenster
	STARTUPINFO sInfo; 
	ZeroMemory(&amp;sInfo,sizeof(sInfo));
	sInfo.cb			= sizeof(sInfo);
	sInfo.dwFlags		|= STARTF_USESTDHANDLES;//STARTF_USESHOWWINDOW|
	sInfo.hStdOutput	= hChildStdoutWr;	//	
	sInfo.hStdError	= hChildStdoutWr;	//
	sInfo.hStdInput	= hChildStdinRd;	//
//	sInfo.wShowWindow	= SW_SHOW;		

	//Erstelle den Consloenprocess
	CreateProcess(NULL,cExecute,NULL,NULL,TRUE,
          NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,//
		  NULL,NULL,&amp;sInfo,&amp;pInfo);//

      CloseHandle(pInfo.hProcess);
      CloseHandle(pInfo.hThread);

   DWORD dwRead, dwWritten; 
   CHAR chBuf[1024]=&quot;Schreib das da rein du ....&quot;; 

//	for(;;)
//	{
      if(!WriteFile(hChildStdinWr, chBuf, (DWORD)1024, 
         &amp;dwWritten, NULL));//break; 
//	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1140212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140212</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Tue, 19 Sep 2006 10:28:19 GMT]]></title><description><![CDATA[<p>Was ist denn das für ein Programm?</p>
<p>Wenn es ein norales Consolen Programm ist muss es seine Eingaben von stdin lesen, sonst geht es nicht. Wenn Du die std-pipes geändert hast, dann ist für die Eingabe wie für die Ausgabe nichts anderes mehr zulässig. Will heißen: Definierst Du stdin aus einer Datei, sind Tastatureingaben nicht mehr drin.</p>
<p>Also nochmal: Was ist das für ein Programm?<br />
Teste das ganze mal mit SORT!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140232</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to in die cmd.exe (Konsole) schreiben on Tue, 19 Sep 2006 12:01:35 GMT]]></title><description><![CDATA[<p>hmm mal nachkucken ob ich das jetzt kapiert hab,</p>
<p>nun ich hab nen aufsatz (wenn man das so nennen kann) für die lib, link, dumbbin.exe usw... geschrieben mit der ich die exen direkt ansteuern kann durch hacken setzen wird der options string (zB. /EXPORTS /DEF:Mod.def) erstellt der dann an die jeweilige exe übergeben wird.</p>
<p>da ich mit sicherhet nicht alle optionen richtig verstanden hab, wollte ich jetzt den option string direct an die cmd.exe übergeben um direkt überprüfen zu können ob die eingabe so stimmt.</p>
<p>oder kann man das evtel über die zwischenablage einfügen?</p>
<p>SORT sagt mir jetzt gar nix?</p>
<p>LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140309</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Tue, 19 Sep 2006 12:01:35 GMT</pubDate></item></channel></rss>