<?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[CloseHandle ... Fehler meinerseits? Prozess lebt weiter]]></title><description><![CDATA[<pre><code class="language-cpp">STARTUPINFO startUpInfo; 
PROCESS_INFORMATION processInfo;
[...]
CreateProcess( NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &amp;startUpInfo, &amp;processInfo )
[...]
void ControlHandler(DWORD request) 
{
	int ok;

	ok = 1;
    switch( request ) 
    { 
		//Wenn der Service gestoppt wird:
        case SERVICE_CONTROL_STOP:
			if( !CloseHandle( processInfo.hProcess ) )
				ok = 0;
			else if ( !CloseHandle( processInfo.hThread ) )
				ok = 0;
			if( 0 == ok )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped by Controlpanel\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break; 

		//Wenn der Computer heruntergefahren wird:
        case SERVICE_CONTROL_SHUTDOWN:
			if( !CloseHandle( processInfo.hProcess ) )
				ok = 0;
			else if ( !CloseHandle( processInfo.hThread ) )
				ok = 0;
			if( 0 == ok )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped because Computer is shuting down.\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break;

        default:
		break;
    }

    //Den aktuellen Status setzen.
    SetServiceStatus (hStatus,  &amp;ServiceStatus);
}

void WriteErrorToLog( int fehlerNachricht )
{
	char *fehler;
	fehler = malloc( 1024 * sizeof(char) );

	strcpy( fehler, &quot;Es wurde ein Fehler mit dem Code: &quot; );
	strcat( fehler, intToChar( fehlerNachricht ) );
	strcat( fehler, &quot; gefunden.&quot; );

	WriteToLog( fehler );
}
</code></pre>
<p>Ich wunderte mich dass er immer schrieb</p>
<pre><code>[Wed Jan 09 12:51:21 2008]: Service Started
[Wed Jan 09 12:51:21 2008]: Try to start server...
[Wed Jan 09 12:51:21 2008]: Wait for complete start:
[Wed Jan 09 12:51:21 2008]: Complete start successfull.
[Wed Jan 09 12:51:21 2008]: Service works.
[Wed Jan 09 12:51:26 2008]: Killing Process succeed.
[Wed Jan 09 12:51:26 2008]: Service stoped by Controlpanel
</code></pre>
<p>denn der Prozess lief immer weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Dann habe ich mal einfach so schreiben lassen (also den Fehler-Code)</p>
<pre><code>[Wed Jan 09 13:04:52 2008]: Service Started
[Wed Jan 09 13:04:52 2008]: Try to start server...
[Wed Jan 09 13:04:52 2008]: Wait for complete start:
[Wed Jan 09 13:04:52 2008]: Complete start successfull.
[Wed Jan 09 13:04:52 2008]: Service works.
[Wed Jan 09 13:04:56 2008]: Es wurde ein Fehler mit dem Code: 0 gefunden.
[Wed Jan 09 13:04:56 2008]: Service stoped by Controlpanel
</code></pre>
<p>Wieso klappt alles, und der Prozess läuft weiter?</p>
<p>MFG Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202253/closehandle-fehler-meinerseits-prozess-lebt-weiter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 22:37:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202253.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jan 2008 12:13:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:13:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">STARTUPINFO startUpInfo; 
PROCESS_INFORMATION processInfo;
[...]
CreateProcess( NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &amp;startUpInfo, &amp;processInfo )
[...]
void ControlHandler(DWORD request) 
{
	int ok;

	ok = 1;
    switch( request ) 
    { 
		//Wenn der Service gestoppt wird:
        case SERVICE_CONTROL_STOP:
			if( !CloseHandle( processInfo.hProcess ) )
				ok = 0;
			else if ( !CloseHandle( processInfo.hThread ) )
				ok = 0;
			if( 0 == ok )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped by Controlpanel\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break; 

		//Wenn der Computer heruntergefahren wird:
        case SERVICE_CONTROL_SHUTDOWN:
			if( !CloseHandle( processInfo.hProcess ) )
				ok = 0;
			else if ( !CloseHandle( processInfo.hThread ) )
				ok = 0;
			if( 0 == ok )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped because Computer is shuting down.\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break;

        default:
		break;
    }

    //Den aktuellen Status setzen.
    SetServiceStatus (hStatus,  &amp;ServiceStatus);
}

void WriteErrorToLog( int fehlerNachricht )
{
	char *fehler;
	fehler = malloc( 1024 * sizeof(char) );

	strcpy( fehler, &quot;Es wurde ein Fehler mit dem Code: &quot; );
	strcat( fehler, intToChar( fehlerNachricht ) );
	strcat( fehler, &quot; gefunden.&quot; );

	WriteToLog( fehler );
}
</code></pre>
<p>Ich wunderte mich dass er immer schrieb</p>
<pre><code>[Wed Jan 09 12:51:21 2008]: Service Started
[Wed Jan 09 12:51:21 2008]: Try to start server...
[Wed Jan 09 12:51:21 2008]: Wait for complete start:
[Wed Jan 09 12:51:21 2008]: Complete start successfull.
[Wed Jan 09 12:51:21 2008]: Service works.
[Wed Jan 09 12:51:26 2008]: Killing Process succeed.
[Wed Jan 09 12:51:26 2008]: Service stoped by Controlpanel
</code></pre>
<p>denn der Prozess lief immer weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Dann habe ich mal einfach so schreiben lassen (also den Fehler-Code)</p>
<pre><code>[Wed Jan 09 13:04:52 2008]: Service Started
[Wed Jan 09 13:04:52 2008]: Try to start server...
[Wed Jan 09 13:04:52 2008]: Wait for complete start:
[Wed Jan 09 13:04:52 2008]: Complete start successfull.
[Wed Jan 09 13:04:52 2008]: Service works.
[Wed Jan 09 13:04:56 2008]: Es wurde ein Fehler mit dem Code: 0 gefunden.
[Wed Jan 09 13:04:56 2008]: Service stoped by Controlpanel
</code></pre>
<p>Wieso klappt alles, und der Prozess läuft weiter?</p>
<p>MFG Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433586</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:13:45 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:18:19 GMT]]></title><description><![CDATA[<p>Weil CloseHandle gar nicht die Aufgabe hat, den Prozess hinter dem übergebenem Handle zu beenden - es gibt nur das Handle frei, mit dem du auf diesen Prozess verwiesen hast. Um den Prozess zu beenden, mußt du ihm schon mitteilen, daß Feierabend ist (z.B. über SendMessage())<sup>*</sup>, und anschließend darauf warten, daß er sich wirklich beendet hat.</p>
<p><sup>*</sup> Wenn du <em>sehr</em> verzweifelt bist, kannst du auch die Haubitze &quot;TerminateProcess()&quot; auspacken - aber die ist nur für absolute Notfälle vorgesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433590</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:38:23 GMT]]></title><description><![CDATA[<p>Also</p>
<pre><code class="language-cpp">SendMessage( OpenProcess( 0, FALSE, (DWORD)processInfo.hProcess ),  );
</code></pre>
<p>Was kommt dann? Wo kann ich diese Nachrichten finden, die ih übergeben kann?</p>
<p>*PC_Neustart_DA 100%_CPU_LAST_WEGEN_UNKILLED_PROCESSES* &lt;&lt; hehe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433599</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:44:18 GMT]]></title><description><![CDATA[<p>Wenn du das Programm am anderen Ende selber geschrieben hast, kannst du auch eine eigene Nachricht definieren (über RegisterWindowMessage()), die du versenden kannst. Wenn das Zielprogramm fertig vorgegeben ist, würde ich es mit Standardnachrichten wie WM_CLOSE versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433605</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:49:30 GMT]]></title><description><![CDATA[<pre><code>SendMessage( OpenProcess( 0, FALSE, (DWORD)processInfo.hProcess ), WM_CLOSE, 0, 0 );
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> mit WM_QUIT hats nicht geklappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433614</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 12:59:46 GMT]]></title><description><![CDATA[<p>SendMessage erwartet ein Fensterhandle, OpenProcess gibt aber nur ein Prozesshandle zurück. Die Kombination von beiden funktioniert generell nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433617</guid><dc:creator><![CDATA[sri]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 13:11:28 GMT]]></title><description><![CDATA[<p>Und wie mache ich dass dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433623</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 13:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 15:44:26 GMT]]></title><description><![CDATA[<p>Wenn Du statt CreateProcess, ShellExecuteEx verwendest, dann bekommst Du das Fensterhandle frei Haus.</p>
<p><strong>EDIT: Die sist nicht korrekt. ShelleExecuteEx liefert kein Fenster-Handle des neuen Prozesses zurück!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433636</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 09 Jan 2008 15:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 13:31:25 GMT]]></title><description><![CDATA[<p>Könnte ShellExecuteEx dann auch Fenster anzeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433640</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 13:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 14:11:18 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wenn Du statt CreateProcess, ShellExecuteEx verwendest, dann bekommst Du das Fensterhandle frei Haus.</p>
</blockquote>
<p>Huch, wie denn das? Das hwnd in SHELLEXECUTEINFO ist doch nur als Elternfenster für eventuelle Fehlerhinweise gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433671</guid><dc:creator><![CDATA[sri]]></dc:creator><pubDate>Wed, 09 Jan 2008 14:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 14:47:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">myProcess.cbSize = sizeof( SHELLEXECUTEINFO );
	myProcess.fMask = SEE_MASK_DOENVSUBST;
	myProcess.hwnd = NULL;
	myProcess.lpVerb = tmp;
	myProcess.lpFile = pName;
	myProcess.lpParameters = NULL;
	myProcess.lpDirectory = path;
	myProcess.nShow = SW_MAXIMIZE;
	myProcess.hInstApp = seErr;
	myProcess.lpIDList = 0;
	myProcess.lpClass = NULL;
	myProcess.hkeyClass = NULL;
	myProcess.dwHotKey = 0;
	//myProcess.DUMMYUNIONNAME.hIcon = NULL;
	//myProcess.DUMMYUNIONNAME.hMonitor = SEE_MASK_HMONITOR;
	myProcess.hProcess = NULL;

	ShellExecuteEX( myProcess );
</code></pre>
<pre><code class="language-cpp">void ControlHandler(DWORD request) 
{
	int ok;

	LPDWORD tmp;

	ok = 1;
    switch( request ) 
    { 
		//Wenn der Service gestoppt wird:
        case SERVICE_CONTROL_STOP:
			//SendMessage( OpenProcess( 0, FALSE, (DWORD)processInfo.hProcess ), WM_CLOSE, 0, 0 );

			GetExitCodeThread( processInfo.hThread, tmp );
			ExitThread( *tmp );

			GetExitCodeProcess( processInfo.hProcess, tmp );
			ExitProcess( *tmp );

			WriteToLog( &quot;Killing Process succeed.&quot; );

			//In das Logfile eintragen, dass der Service beendet wurde.
			WriteToLog( &quot;Service stoped by Controlpanel\n\n&quot; );

			//Servicestatus zurücksetzen.
			ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
			ServiceStatus.dwWin32ExitCode = 0;
        break;
</code></pre>
<p>ganz ehrlich? Ich glaube dass ist Falsch.</p>
<p>Ich habe bei sowas immer ein ungutes gefühl <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ich habe den Rest des Codes noch nicht umgebaut, wollte erst mal wissen wass ihr dazu sagt!?</p>
<p>[eidt]Code erneuert<br />
[edit2] neuer code( Geht dass auch so, mit CreateProcess? Der Service stürzt beim Beenden ab... )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433676</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 09 Jan 2008 14:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Wed, 09 Jan 2008 15:43:34 GMT]]></title><description><![CDATA[<p>sri schrieb:</p>
<blockquote>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wenn Du statt CreateProcess, ShellExecuteEx verwendest, dann bekommst Du das Fensterhandle frei Haus.</p>
</blockquote>
<p>Huch, wie denn das? Das hwnd in SHELLEXECUTEINFO ist doch nur als Elternfenster für eventuelle Fehlerhinweise gedacht.</p>
</blockquote>
<p>Upps. Sorry! Habe mich vertan...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433760</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 09 Jan 2008 15:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 09:47:34 GMT]]></title><description><![CDATA[<p>Könnt ihr mir da noch mal Helfen?</p>
<p>Wie kann ich denn einen Prozess von CreateProcess beenden?<br />
Geht dass mit meinem geschriebenen</p>
<pre><code class="language-cpp">GetExitCodeThread( processInfo.hThread, tmp );
            ExitThread( *tmp );

            GetExitCodeProcess( processInfo.hProcess, tmp );
            ExitProcess( *tmp );
</code></pre>
<p>Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434160</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 09:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 09:58:19 GMT]]></title><description><![CDATA[<p>ExitThread() und ExitProcess() beenden deinen eigenen Thread bzw. Prozess, damit dürfte dir nicht geholfen sein. Du müsstest das Hauptfenster des geöffneten Prozesses finden (ist aber nicht gerade einfach, zumal nicht jeder Prozess ein Hauptfenster haben muß) und eine WM_CLOSE Nachricht dorthin schicken. Wenn das aufgerufene Programm vernünftig ist, beendet es sich als Reaktion darauf.<br />
(eventuell könnte auch PostThreadMessage() helfen)</p>
<p>PS: Was für ein Programm willst du überhaupt auf diese Weise steuern? Ein eigenes oder etwas fertig gegebenes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434163</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 Jan 2008 09:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 13:10:01 GMT]]></title><description><![CDATA[<p>Ich will lediglich eine *.exe die meine 2 Azubi-Kollegen geschrieben haben starten und dann beenden.</p>
<p>Sie schreiben dass Programm, ich den passenden Dienst quasi.<br />
Werde mal &quot;PostThreadMessage&quot; anschauen.</p>
<p>[edit]<br />
Soll ich einfach</p>
<pre><code class="language-cpp">PostThreadMessage( processInfo.hTread, WM_CLOSE, 0, 0 )
</code></pre>
<p>ich kann mit den letzten beiden nichts anfangen....<br />
Was sind das für Parameter?</p>
<p>[edit2]</p>
<pre><code class="language-cpp">if( !PostThreadMessage( (DWORD)processInfo.hThread, WM_CLOSE, 0, 0 ) )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped by Controlpanel\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
</code></pre>
<p>Geschrieben wird:</p>
<pre><code>[Thu Jan 10 14:07:32 2008]: Service Started
[Thu Jan 10 14:07:32 2008]: Try to start server...
[Thu Jan 10 14:07:32 2008]: Wait for complete start:
[Thu Jan 10 14:07:32 2008]: Complete start successfull.
[Thu Jan 10 14:07:32 2008]: Service works.
[Thu Jan 10 14:07:35 2008]: Es wurde ein Fehler mit dem Code: 1444 gefunden.
[Thu Jan 10 14:07:35 2008]: Killing Process succeed.
[Thu Jan 10 14:07:35 2008]: Service stoped by Controlpanel
</code></pre>
<p>1444 = Invalid Thread ID <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434256</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 13:26:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void ControlHandler(DWORD request) 
{
	int ok;

	LPDWORD tmp;

	ok = 1;
    switch( request ) 
    { 
		//Wenn der Service gestoppt wird:
        case SERVICE_CONTROL_STOP:

			if( !PostThreadMessage( processInfo.dwThreadId, WM_QUIT, 0, 0 ) )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped by Controlpanel\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break; 

		//Wenn der Computer heruntergefahren wird:
        case SERVICE_CONTROL_SHUTDOWN:
			if( !PostThreadMessage( processInfo.dwThreadId, WM_QUIT, 0, 0 ) )
				WriteErrorToLog( GetLastError() );
			else
			{
				WriteToLog( &quot;Killing Process succeed.&quot; );

				//In das Logfile eintragen, dass der Service beendet wurde.
				WriteToLog( &quot;Service stoped because Computer is shuting down.\n\n&quot; );

				//Servicestatus zurücksetzen.
				ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
				ServiceStatus.dwWin32ExitCode = 0;
			}
        break;

        default:
		break;
    }

    //Den aktuellen Status setzen.
    SetServiceStatus (hStatus,  &amp;ServiceStatus);
}
</code></pre>
<p>So sieht dass aus, und ins log kommt dass:</p>
<pre><code>[Thu Jan 10 14:22:27 2008]: Service Started
[Thu Jan 10 14:22:27 2008]: Try to start server...
[Thu Jan 10 14:22:27 2008]: Wait for complete start:
[Thu Jan 10 14:22:27 2008]: Complete start successfull.
[Thu Jan 10 14:22:27 2008]: Service works.
[Thu Jan 10 14:22:39 2008]: Killing Process succeed.
[Thu Jan 10 14:22:39 2008]: Service stoped by Controlpanel
</code></pre>
<p>Aber leider läuft der Prozess weiter...</p>
<p>Muss ich in der *.exe Datei dess Prozesses irgendwas machen, das dass klappt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434271</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 13:34:26 GMT]]></title><description><![CDATA[<p>Eventuell wäre es erstmal eine gute Idee, deinen Erfolg zu überprüfen, bevor du die Bestätigung rausschreibst (WaitForSingleObject() könnte helfen). Und dann muß das Zielprogramm immer noch auf deine Message reagieren - und dazu brauchst du dessen Mithilfe.</p>
<p>Edit: Hast du den letzten Code auch mal mit WM_CLOSE ausprobiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434276</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 13:33:59 GMT]]></title><description><![CDATA[<p>Ich kann es nicht mehr sehen:<br />
<a href="http://blog.m-ri.de/index.php/2007/12/09/die-unsitte-postquitmessage-zum-beenden-eines-programmes-zu-verwenden/" rel="nofollow">http://blog.m-ri.de/index.php/2007/12/09/die-unsitte-postquitmessage-zum-beenden-eines-programmes-zu-verwenden/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434277</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 13:46:32 GMT]]></title><description><![CDATA[<p>Ja ich habe WM_CLOSE auch ausprobiert, allerdings ohne die Erolgsabfrage..</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ich kann es nicht mehr sehen:</p>
</blockquote>
<p>Super...<br />
Also:<br />
Du hast schon öfter geantwortet, dafür bin ich dankbar, aber ich Zitiere mal deinen Schulss vom Post</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Der richtige Weg ist und bleibt es das/alle Main Window(s) zu zerstören und entsprechend dann (im WM_DESTROY Handler) PostQuitMessage (AfxPostQuitMessage) auszuführen.</p>
</blockquote>
<p>Super, was meinst du mit &quot;(im WM_DESTROY Handler)&quot;...<br />
Ich bin nicht sooo der gieg im C-Programmieren,<br />
könntest du dass nochmal ausführen,<br />
evtl mit psoydo -schreibt man dass so?- Code.</p>
<p>Ich erwarte von dir KEINEN fertigen Code, bitte, ich will ja auch irgendwo lernen <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="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Eventuell nochmal ein part zur kreation dess Prozesses:</p>
<pre><code class="language-cpp">if( CreateProcess( NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &amp;startUpInfo, &amp;processInfo ) )
	{
		WriteToLog( &quot;Wait for complete start:&quot; );

		WriteToLog( &quot;Complete start successfull.&quot; );
	}
	else
	{
		WriteErrorToLog( GetLastError() );
		error = 1;
	}
</code></pre>
<p>Also weis ichnicht was du mit Fenster meinst oder so....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434285</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 14:05:46 GMT]]></title><description><![CDATA[<p>Evtl. interessant:<br />
<a href="http://msdn.microsoft.com/msdnmag/issues/02/07/CQA/" rel="nofollow">http://msdn.microsoft.com/msdnmag/issues/02/07/CQA/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434298</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 14:15:00 GMT]]></title><description><![CDATA[<p>Interessant bestimmt, aber nur in C++,<br />
ich programmiere C</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434304</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:15:00 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 14:48:15 GMT]]></title><description><![CDATA[<p>Aus einem fremden Programm heraus bleibt einem nur WM_CLOSE an das Main-Window zu posten.</p>
<p>Der Artikel, den ich schreib bezog sich nicht auf den Versuch von Extern ein Programm mit WM_QUIT zu schließen, was aber genau so verboten gehört wie der Versuch es von intern zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434335</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 14:52:22 GMT]]></title><description><![CDATA[<p>Ja ich habe es aber nicht mit WM_CLOSE geschaft den Prozess zu beenden, hast du da noch einen Tipp -du scheinst ja mächtig ahnung zu haben.-...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434345</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 15:09:45 GMT]]></title><description><![CDATA[<p>Dann geht es eben nicht, oder Du sendest an das falsche Fenster...</p>
<p>Nur mal als Beispiel: Sollte die Anwendung auf Empfang einer WM_CLOSE Nachricht eine MessagBox anzeigen mit der Frage &quot;Änderungen speichern (j/n)&quot;, dann siehst Du alt aus.</p>
<p>Man kann nicht jeden Prozess von außen regulär Beenden, wenn man keine Kontrolle über dessen User-Interface hat und nicht genau weiß was der Prozess will wenn WM_CLOSE gesendet wird...</p>
<p>So ist das nunmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434367</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 10 Jan 2008 15:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Thu, 10 Jan 2008 19:43:52 GMT]]></title><description><![CDATA[<p>lippoliv schrieb:</p>
<blockquote>
<p>Interessant bestimmt, aber nur in C++,<br />
ich programmiere C</p>
</blockquote>
<p>Ist doch lediglich als Klasse gekapselt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434547</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Thu, 10 Jan 2008 19:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to CloseHandle ... Fehler meinerseits? Prozess lebt weiter on Fri, 11 Jan 2008 07:40:53 GMT]]></title><description><![CDATA[<p>C hat ja keine klassen, dass ist dass Problem.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a>,<br />
Dieser Prozess zeigt eigentlich nur eine MessageBox an, und zwar genau dann, wenn eine Nachricht über einen Port kommt,<br />
ansonsten is nix los...<br />
Er wird auch kein anderes Fenster anzeigen...<br />
Muss in diesem Prozess irgendwo eine &quot;Listen&quot;-funktion für eingehende Messages sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434672</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Fri, 11 Jan 2008 07:40:53 GMT</pubDate></item></channel></rss>