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 ENDPDas 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
