Deutsch
Forum

Das Herunterfahren abfangen...

 
- Seite 1 -


Hallo Profaner...

Ich habe folgendes Problem:
Auf den Versuch Windows herunterzufahren muß ein Programm von mir entsprechend reagieren.

Ich weiß, das Windows beim Herunterfahren die Message WM_QUERYENDSESSION an jedes Programm sendet und auf eine positive Rückmeldung wartet. Wie kann ich diese Message mit Profan abfangen und entsprechend behandeln? Hat jemand eine Idee???

Profan 7.5 => Windows2000/XP
 
20.02.2005  
 



 
- Seite 1 -



Frank
Abbing
Gerade gefunden: [...] 
Andreas hat sowas schon geschrieben
 
22.02.2005  
 



 
- Seite 2 -


Nochmals besten Dank, Frank. Das zeigt mir eigentlich schon, daß ich die Sache richtig verstanden habe.
Ich werde mich mal auf Andreas Homepage umsehen. Bislang kenne ich nur die Möglichkeit, mit SetWindowLong die Adresse der neuen Prozedur zu übergeben, vielleicht komme ich da noch auf neue Ideen.
 
22.02.2005  
 



Hallo Frank...

Dein Tipp war goldrichtig und hat mir fast alle meiner Fragen auf einmal beantwortet .
Kann man Subclassing auch mit externen DLLs realisieren, oder muß die Prozedur innerhalb meines Programms stehen?
 
22.02.2005  
 




Frank
Abbing
Hi,

nein, eine externe Dll geht natürlich auch. Siehe Message.dll
 
22.02.2005  
 



Da habe ich wirklich eine ganze Menge dazugelernt . Leider zeigt mir das aber auch, daß ich mit meiner jetzigen Profanversion auf keinen Fall weiterkomme.


Ich habe jetzt folgende große Bitte an jeden von euch:
Ich brauche für eines meiner Shareware Programme eine mit UPX komprimierte XProfan EXE als Freeware. Dieses Programm soll mittels Subclassing die Message WM_QUERRYENDSESSIN abfangen und, wenn diese Message aufgetreten ist, Windows mit dem Profanbefehl ExitWindows 4 herunterfahren. Das von der EXE erzeugte Fenster muß unsichtbar sein. Ob das Programm in der Taskleiste erscheint, ist egal (Übergangslösung, bis ich XProfan habe).

Das hört sich vielleicht ziemlich kompliziert an, in Wirklichkeit sind das aber nur ein paar Zeilen Quelltext. Fast alles, was man zu diesem Programm braucht - sogar den größten Teil des Quelltextes (nämlich das Subclassing der Message WM_QUERRYENDSESSION) - findet man eigentlich schon auf der XProfan Homepage von Andreas Miethe. Das ganze dürfte also nur eine Arbeit von ein paar Minuten sein.

Ich weiß, daß das eine sehr große Bitte ist, und ich wäre auch nicht böse, wenn mir diesen Wunsch niemand erfüllen würde - aber riesig freuen würde ich mich schon.
 
22.02.2005  
 



Nein eigendlich keine große bitte - Du holst Dir einfach die neuste XProfan-Shareware ausm Downloadbereich und proggst was Du brauchst. Das Compilieren inne Exe wird sicherlich jemand für Dich übernehmen.

Salve, iF
 
22.02.2005  
 




Frank
Abbing
Hi,

mach den Code nach deinen Vorstellungen fertig und schicke ihn mir ruhig zu. Ich kompiliere ihn für dich und schicke dir die Exe zurück.
Noch besser wäre es, du legst dir XProfan zu...
 
22.02.2005  
 




Michael
Dell
Hallo,

meint ihr so etwa?
KompilierenMarkierenSeparieren
Def CallWindowProc(5) !"USER32.DLL","CallWindowProcA"  lpPrevWndFunc&,hwnd&,MSG&,wParam&,lParam&
Def SetWindowLong(3)  !"USER32.DLL","SetWindowLongA"   hwnd&,nIndex&,dwNewLong&
Def &GWL_WNDPROC            -4
Def &WM_QUERYENDSESSION  $0011
Def &WM_CANCELMODE       $001F
Declare gHW&,lpPrevWndProc&

Proc NewWindowProc

    Parameters hw&,uMsg&,wParam&,lParam&
    Declare Ant&
    Case (uMsg& = &WM_QUERYENDSESSION): ExitWindows 4
    Return CallWindowProc(lpPrevWndProc&,hw&,uMsg&,wParam&,lParam&)

EndProc

Proc Hook

    gHW& = %hwnd
    lpPrevWndProc& = SetWindowLong(gHW&,&GWL_WNDPROC,ProcAddr("NewWindowProc",4))

EndProc

Window Add(%maxX,10),100-25,25
ShowWindow(%HWnd,0)
Hook

While 1

    WaitInput

EndWhile

End

Hab das mal mit Profan2Cpp & UPX auf 76kB gedrückt: [...] 

Vielleicht isses ja brauchbar.

Gruß

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
22.02.2005  
 



Hallo Michael...

Denk dir einen Schönen Titel für das Fenster aus und kompiliere das zur EXE - das müßte es sein! Zum Testen des Programms kanns du einfach Notepad starten, einen kleinen Text eingeben und nicht speichern. Wenn du dann das Programm startest und Windows danach herunterfahren läßt, soll Windows ohne Nachfrage beendet werden.

@IF...
Mein Rechner ist mit Profanversionen bis zum Stehkragen gefüllt - laufend gibt es Probleme die richtige Hilfe zu starten. Deshalb ziehe ich mir jetzt nicht die Sharewareversion - aber demnächst die Vollversion.

Vielen Dank an alle für ihre Hilfe!
 
23.02.2005  
 



Für solcherlei Probleme gibs doch aba den XPSE.

Naja und die Hilfe... da braucht man doch eigendlich imma nur die Neueste.

Salve, iF
 
23.02.2005  
 



Hallo Michael...

Au bion ich blöd! Hab den Link ganz übersehen - Programm ist ja schon fertig! Werds morgen gleich testen!!!
 
23.02.2005  
 



Hallo Michael...

Das Programm funktioniert hervorragend und ist haargenau und bis aufs I-Tüpfelchen genau das was ich haben wollte! ~pressmee~

...Vielleicht hilft es ja noch irgendeinem weiter, wenn ich jetzt mal genauer auf die Unterschiede beim Herunterfahren von Windows eingehe:

Windows95/98/ME=>
Es wird an jedes Toplevelfenster die Message WM_QUERYENDSESSION gesendet. Erst wenn alle Fenster eine 1 zurückgeliefert haben, wird die Message WM_ENDSESSION an die Fenster geschickt, die alle laufenden Programme beendet. Liefert ein Fenster als Antwort auf WM_QUERYENDSESSION 0 zurück, wird die Message WM_ENDSESSION nicht abgeschickt.

WindowsNT/2000/XP=>
Es wird an jedes Toplevelfenster die Message WM_QUERYENDSESSION geschickt. Jedes Fenster, das eine 1 zurückliefert, erhält dann die Message WM_ENDSESSION , was dazu führt, daß das betreffende Programm beendet wird. Liefert ein Fenster auf WM_QUERYENDSESSION 0 zurück, wird der ganze Prozess abgebrochen und es wird an die nachfolgenden Fenster weder die Message WM_QUERYENDSESSION noch die Message WM_ENDSESSION gesendet.
Welches Fenster zuerst die Message WM_QUERYENDSESSION bekommt, hängt davon ab, wann der dazugehörige Prozess gestartet wurde (meiner Meining nach eine extrem unideale Variante des Shutdowns).
 
24.02.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

14.873 Betrachtungen

Unbenanntvor 0 min.
Stefan M. Caillet28.07.2011
Unbenannt27.06.2011
iF21.06.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie