Italia
Foro

Das Herunterfahren abfangen...

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



 
- Page 1 -



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



 
- Page 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 trasferimento, 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 DLL realisieren, oder muß die Prozedur innerhalb meines Programms stehen?
 
22.02.2005  
 




Frank
Abbing
Hi,

nein, eine externe Dll geht naturalmente 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 grande Bitte an jeden von euch:
Ich brauche per 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 potrebbe also nur eine Arbeit von ein paar Minuten sein.

Ich weiß, daß das eine sehr grande 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 grande bitte - Du holst Dir einfach die neuste XProfan-Shareware ausm Downloadbereich und proggst was Du brauchst. Das Compilieren inne Exe wird sicherlich jemand per 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 per dich und schicke dir die Exe zurück.
Noch besser wäre es, du legst dir XProfan zu...
 
22.02.2005  
 




Michael
Dell
Ciao,

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.

Saluto

Michael...
 
Salu Michael...

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



Hallo Michael...

Denk dir einen Schönen Titel per 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 Aiuto zu starten. Deshalb ziehe ich mir jetzt nicht die Sharewareversion - aber demnächst die Vollversion.

Vielen Dank an alle per ihre Aiuto!
 
23.02.2005  
 



Für solcherlei Probleme gibs doch aba den XPSE.

Naja und die Aiuto... 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  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

14.948 Views

Untitledvor 0 min.
Stefan M. Caillet28.07.2011
Untitled27.06.2011
iF21.06.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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