Vor Shutdown HTTP Request senden



  • Hi,

    ich will das WLAN einer Fritzbox automatisch deaktivieren, sobald jemand unter WinXP Home auf Start > Ausschalten > Ausschalten klickt.

    Ich kann nun zwar mittels WinAPI die Nachricht WM_QUERYENDSESSION abfangen, blos funktionieren tut das nicht so ganz.

    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
    

    Das Drumrum in Assembler is ja egal, das wichtige is imo lesbar.
    Fakt ist halt, dass ja Windows die SHutdown Prozedur beenden sollte, wenn ich bei der QUERYENDSESSION Nachricht 0 zurückgebe.
    Tut es aber nicht.
    Der Shutdown wird trotzdem fortgeführt.
    Wäre auch egal, denn ich könnte ja in der WM(QUERY)ENDSESSION Nachricht selbst noch kurz nen Signal nach außen senden.
    Bloß auch dies scheitert.
    Wenn ich statt die Socketfunktionen connect & send auskommentier und stattdessen ne MessageBox reinklatsche, wird diese MB angezeigt und anschließend das System heruntergefahren.
    Blos wenn ich die Socketbefehle drin lass, tut sich quais nichts mehr. Es kommt dann der Dialog "Programm xy muss beendet werden".

    Ich hab nun vermutet, dass keine Verbindung nach außen mehr aufgebaut werden kann, sobald die Shutdownprozedur eingeleitet wurde.

    Blos wie kann ich dann mein Problem lösen? Und vor allem, wie bring ich Win dann dazu, den Shutdown wirklich zu unterbrechen?

    Evtl den kompletten Shutdownprozess hooken? Oder die "Ausschalten" Schaltfläche? Wär ja bald etwas viel Arbeit für das popelige Vorhaben...



  • Direkt bei deinem Problem kann ich dir leider nicht weiterhelfen.

    Ich weiß jedoch von meiner eigenen Fritzbox, dass diese sowohl eine "Sendeleistung automatisch auf den tatsächlichen Bedarf verringern" WLAN Option hat, als auch eine "Nachtschaltung" 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).

    Wenn es dir um Energiesparmaßnahmen geht, sollte es das wohl tun.

    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 "zufällig" wie möglich zusammengesetzt sein.

    Dann bist du relativ gut abgesichert. 😉



  • Thx für den Tipp. ich würds aber trotzdem gern so lösen 😉


Anmelden zum Antworten