<?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[Aktualisieren von ClistCtrl]]></title><description><![CDATA[<p>Hallo alle zusammen</p>
<p>ich habe folgendes Problem: ich hab eine Liste die ich mit Daten fühle. Danach führe ich mit Hilfe von CreateProcess ein Script auf mit denn Daten aus der Liste als Parameter, praktisch nach jeder Zeile wird ein neues Prozess aufgerufen. Nach jedem beendetem Prozess würde ich gerne in die Liste z.B Fertig schreiben. Leider geht es nicht. Das Hauptdialogfeld friert praktisch ein und erst wenn alle Prozesse fertig sind wird die entsprechende Spalte gefühlt. Ich habe schon mit Sleep(..) ausprobiert was leider nicht ging. UpdateData habe ich natürlich auch drin. Für Hilfe wäre ich sehr dankbar.</p>
<p>Gruß Salfador</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/62518/aktualisieren-von-clistctrl</link><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 02:45:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/62518.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Jan 2004 10:49:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aktualisieren von ClistCtrl on Sat, 24 Jan 2004 10:49:03 GMT]]></title><description><![CDATA[<p>Hallo alle zusammen</p>
<p>ich habe folgendes Problem: ich hab eine Liste die ich mit Daten fühle. Danach führe ich mit Hilfe von CreateProcess ein Script auf mit denn Daten aus der Liste als Parameter, praktisch nach jeder Zeile wird ein neues Prozess aufgerufen. Nach jedem beendetem Prozess würde ich gerne in die Liste z.B Fertig schreiben. Leider geht es nicht. Das Hauptdialogfeld friert praktisch ein und erst wenn alle Prozesse fertig sind wird die entsprechende Spalte gefühlt. Ich habe schon mit Sleep(..) ausprobiert was leider nicht ging. UpdateData habe ich natürlich auch drin. Für Hilfe wäre ich sehr dankbar.</p>
<p>Gruß Salfador</p>
]]></description><link>https://www.c-plusplus.net/forum/post/443028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/443028</guid><dc:creator><![CDATA[Salfador]]></dc:creator><pubDate>Sat, 24 Jan 2004 10:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to Aktualisieren von ClistCtrl on Sat, 24 Jan 2004 11:09:56 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Du solltest dir ein HANDLE von<br />
jeden Prozess holen.<br />
In einer Schleife die gültigkeit überprüfen.<br />
Falls der Prozess bzw HANDLE nicht mehr<br />
gültig ist -&gt; updaten.</p>
<p>tomb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/443041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/443041</guid><dc:creator><![CDATA[tomb]]></dc:creator><pubDate>Sat, 24 Jan 2004 11:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to Aktualisieren von ClistCtrl on Sun, 25 Jan 2004 15:28:03 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>danke für die Anwort. Köntest du es mit dem Hänle etwas genauer erklären. Wie meinst du es Handle abfangen. Ich benutze voelgenden code(aus der MSDN):</p>
<pre><code class="language-cpp">ZeroMemory( &amp;si, sizeof(si) );
				si.cb = sizeof(si);
				ZeroMemory( &amp;pi, sizeof(pi) );
				if ( !CreateProcess(0,cPath,
					NULL,             // Process handle not inheritable. 
					NULL,             // Thread handle not inheritable. 
					FALSE,            // Set handle inheritance to FALSE. 
					0,                // No creation flags. 
					NULL,             // Use parent's environment block. 
					NULL,             // Use parent's starting directory. 
					&amp;si,              // Pointer to STARTUPINFO structure.
					&amp;pi ))
				{
					MessageBox(&quot;Konvertierung fehlgeschlagen&quot;,&quot;Error&quot;, MB_ICONERROR | MB_OK);
				}

				WaitForSingleObject( pi.hProcess, INFINITE );

				// Close process and thread handles. 
				CloseHandle( pi.hProcess );
				CloseHandle( pi.hThread );
</code></pre>
<p>Für eine Antwort wäre ich Dankbar.</p>
<p>Gruß Salfador</p>
]]></description><link>https://www.c-plusplus.net/forum/post/443707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/443707</guid><dc:creator><![CDATA[Salfador]]></dc:creator><pubDate>Sun, 25 Jan 2004 15:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to Aktualisieren von ClistCtrl on Sun, 25 Jan 2004 15:44:43 GMT]]></title><description><![CDATA[<p>Während deinem WaitForSingleObject blockierst du den Hauptthread deiner Anwendung, der auch z.B. für das das Verarbeiten von Nutzereingaben und das Neuzeichnen der Liste verantwortlich ist.</p>
<p>Du kannst ein neuzeichnen mit UpdateWindow() erzwingen -<br />
allerdings &quot;hängt&quot; deine Anwendung immer noch.</p>
<p>Die sauberste Lösung wäre sicherlich, das Processing in einen Worker-Thread zu legen, der den Hauptthread mittels PostMessage von seinen Fortschritten benachrichtigt. Ist aber möglicherwese etwas komplex für nen Einsteiger.</p>
<p>Die nächstbeste Lösung wäre, sich einen Timer zu setzen, und den Handle z.B. aller 100 ms zu testen ohne zu warten ( WaitForSingleObject(pi.hProcess, 0) );</p>
<p>Ist aber recht aufwendig, da man zwischen den Aufrufen eine Menge Status &quot;aufbewahren&quot; muß (z.B. zumindest den Prozeßhandle)</p>
<p>Die am einfachsten zu implementierende, aber m.E. gefährlichste Lösung ist:</p>
<pre><code class="language-cpp">DWORD waitState;
while(1) // break on &quot;Process terminated&quot;
{
  waitState = WaitForSingleObject(pi.hProcess, 100);
  if (ok != WAIT_TIMEOUT) 
    break;
  while (theApp.PumpMessage()); // theApp: see below
}
</code></pre>
<p>(theApp: meine CMyAp-Deklaration wird immer von einem extern CMyApp theApp gefolgt, so kann ich auf das Application-Object (was ja ein Singleton ist) immer nett zugreifen)</p>
<p>PumpMessage dispatcht genau eine anstehende Windows message, und gibt false zurück, wenn keine mehr ansteht. Ist insofern ungünstig weil:<br />
a) ein &quot;PumpMessage&quot; nicht iun allen Umgebungen möglich/erlaubt ist, macht deine Lösung also weniger portabel<br />
b) Man bekommt (oft verwirrende) Reentrancy-Probleme.<br />
c) lokale message-Loops sind immer wieder ein Stolperstein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/443723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/443723</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sun, 25 Jan 2004 15:44:43 GMT</pubDate></item></channel></rss>