<?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[Vor Shutdown HTTP Request senden]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will das WLAN einer Fritzbox automatisch deaktivieren, sobald jemand unter WinXP Home auf Start &gt; Ausschalten &gt; Ausschalten klickt.</p>
<p>Ich kann nun zwar mittels WinAPI die Nachricht WM_QUERYENDSESSION abfangen, blos funktionieren tut das nicht so ganz.</p>
<pre><code>DlgProc PROC hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
	.IF uMsg==WM_QUERYENDSESSION
		MOV EAX, 0
		RET

	.ELSEIF uMsg==WM_INITDIALOG

		INVOKE WSAStartup, 101h, addr wsadata
		.IF EAX != NULL
			INVOKE SendMessage, hWnd, WM_CLOSE, 0, 0
		.ELSE
			INVOKE socket, AF_INET, SOCK_STREAM, 0
			.IF EAX != INVALID_SOCKET
				MOV sock, EAX
				INVOKE htons, 80
				MOV sin_port, AX
				INVOKE inet_addr, addr IPADgDR
				mov sin_addr, EAX
			.ENDIF
		.ENDIF

	.ELSEIF uMsg==WM_ENDSESSION

				INVOKE connect, sock, addr sin_family, 16
				;.IF EAX != SOCKET_ERROR
					INVOKE send, sock, addr BUFFER, SIZEOF BUFFER, 0
					INVOKE MessageBox, 0, 0, 0, MB_OK
				;.ENDIF

	.ELSEIF uMsg==WM_CLOSE
		INVOKE EndDialog, hWnd, 0
	.ELSE
		MOV EAX,FALSE
		RET
	.ENDIF
		MOV EAX,TRUE
		RET

DlgProc ENDP
</code></pre>
<p>Das Drumrum in Assembler is ja egal, das wichtige is imo lesbar.<br />
Fakt ist halt, dass ja Windows die SHutdown Prozedur beenden sollte, wenn ich bei der QUERYENDSESSION Nachricht 0 zurückgebe.<br />
Tut es aber nicht.<br />
Der Shutdown wird trotzdem fortgeführt.<br />
Wäre auch egal, denn ich könnte ja in der WM(QUERY)ENDSESSION Nachricht selbst noch kurz nen Signal nach außen senden.<br />
Bloß auch dies scheitert.<br />
Wenn ich statt die Socketfunktionen connect &amp; send auskommentier und stattdessen ne MessageBox reinklatsche, wird diese MB angezeigt und anschließend das System heruntergefahren.<br />
Blos wenn ich die Socketbefehle drin lass, tut sich quais nichts mehr. Es kommt dann der Dialog &quot;Programm xy muss beendet werden&quot;.</p>
<p>Ich hab nun vermutet, dass keine Verbindung nach außen mehr aufgebaut werden kann, sobald die Shutdownprozedur eingeleitet wurde.</p>
<p>Blos wie kann ich dann mein Problem lösen? Und vor allem, wie bring ich Win dann dazu, den Shutdown wirklich zu unterbrechen?</p>
<p>Evtl den kompletten Shutdownprozess hooken? Oder die &quot;Ausschalten&quot; Schaltfläche? Wär ja bald etwas viel Arbeit für das popelige Vorhaben...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238842/vor-shutdown-http-request-senden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 23:46:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238842.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Apr 2009 13:45:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vor Shutdown HTTP Request senden on Thu, 16 Apr 2009 13:45:54 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will das WLAN einer Fritzbox automatisch deaktivieren, sobald jemand unter WinXP Home auf Start &gt; Ausschalten &gt; Ausschalten klickt.</p>
<p>Ich kann nun zwar mittels WinAPI die Nachricht WM_QUERYENDSESSION abfangen, blos funktionieren tut das nicht so ganz.</p>
<pre><code>DlgProc PROC hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
	.IF uMsg==WM_QUERYENDSESSION
		MOV EAX, 0
		RET

	.ELSEIF uMsg==WM_INITDIALOG

		INVOKE WSAStartup, 101h, addr wsadata
		.IF EAX != NULL
			INVOKE SendMessage, hWnd, WM_CLOSE, 0, 0
		.ELSE
			INVOKE socket, AF_INET, SOCK_STREAM, 0
			.IF EAX != INVALID_SOCKET
				MOV sock, EAX
				INVOKE htons, 80
				MOV sin_port, AX
				INVOKE inet_addr, addr IPADgDR
				mov sin_addr, EAX
			.ENDIF
		.ENDIF

	.ELSEIF uMsg==WM_ENDSESSION

				INVOKE connect, sock, addr sin_family, 16
				;.IF EAX != SOCKET_ERROR
					INVOKE send, sock, addr BUFFER, SIZEOF BUFFER, 0
					INVOKE MessageBox, 0, 0, 0, MB_OK
				;.ENDIF

	.ELSEIF uMsg==WM_CLOSE
		INVOKE EndDialog, hWnd, 0
	.ELSE
		MOV EAX,FALSE
		RET
	.ENDIF
		MOV EAX,TRUE
		RET

DlgProc ENDP
</code></pre>
<p>Das Drumrum in Assembler is ja egal, das wichtige is imo lesbar.<br />
Fakt ist halt, dass ja Windows die SHutdown Prozedur beenden sollte, wenn ich bei der QUERYENDSESSION Nachricht 0 zurückgebe.<br />
Tut es aber nicht.<br />
Der Shutdown wird trotzdem fortgeführt.<br />
Wäre auch egal, denn ich könnte ja in der WM(QUERY)ENDSESSION Nachricht selbst noch kurz nen Signal nach außen senden.<br />
Bloß auch dies scheitert.<br />
Wenn ich statt die Socketfunktionen connect &amp; send auskommentier und stattdessen ne MessageBox reinklatsche, wird diese MB angezeigt und anschließend das System heruntergefahren.<br />
Blos wenn ich die Socketbefehle drin lass, tut sich quais nichts mehr. Es kommt dann der Dialog &quot;Programm xy muss beendet werden&quot;.</p>
<p>Ich hab nun vermutet, dass keine Verbindung nach außen mehr aufgebaut werden kann, sobald die Shutdownprozedur eingeleitet wurde.</p>
<p>Blos wie kann ich dann mein Problem lösen? Und vor allem, wie bring ich Win dann dazu, den Shutdown wirklich zu unterbrechen?</p>
<p>Evtl den kompletten Shutdownprozess hooken? Oder die &quot;Ausschalten&quot; Schaltfläche? Wär ja bald etwas viel Arbeit für das popelige Vorhaben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696699</guid><dc:creator><![CDATA[Biehler]]></dc:creator><pubDate>Thu, 16 Apr 2009 13:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vor Shutdown HTTP Request senden on Thu, 16 Apr 2009 16:55:51 GMT]]></title><description><![CDATA[<p>Direkt bei deinem Problem kann ich dir leider nicht weiterhelfen.</p>
<p>Ich weiß jedoch von meiner eigenen Fritzbox, dass diese sowohl eine &quot;Sendeleistung automatisch auf den tatsächlichen Bedarf verringern&quot; WLAN Option hat, als auch eine &quot;Nachtschaltung&quot; Einstellung besitzt, bei der man angeben kann innerhalb welchen Zeitraums das WLAN komplett abgeschaltet werden soll (optional auch erst wenn sich der letzte WLAN Client abgemeldet hat).</p>
<p>Wenn es dir um Energiesparmaßnahmen geht, sollte es das wohl tun.</p>
<p>Falls du sicherheitstechnische Beweggründe hast, brauchst du eigentlich nur dafür sorgen, dass dein WLAN optimalerweise die WPA2 Verschlüsselung verwendet; der hierzu verwendete Key sollte die Maximallänge (63 Zeichen) betragen und so &quot;zufällig&quot; wie möglich zusammengesetzt sein.</p>
<p>Dann bist du relativ gut abgesichert. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1696788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696788</guid><dc:creator><![CDATA[JustSomeCoder]]></dc:creator><pubDate>Thu, 16 Apr 2009 16:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vor Shutdown HTTP Request senden on Fri, 17 Apr 2009 15:10:58 GMT]]></title><description><![CDATA[<p>Thx für den Tipp. ich würds aber trotzdem gern so lösen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1697333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697333</guid><dc:creator><![CDATA[Biehler]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:10:58 GMT</pubDate></item></channel></rss>