Seite 1 von 1

Windows Shutdown Vista/7/8 (API)

Verfasst: 18.06.2012 16:26
von KatSeiko
Hallo zusammen,

Ich habe mit PB ein Programm geschrieben, das mit einer Datenbank interagiert. Da die Datenbank-Abfrage gern etwas länger dauert, hab ich die Daten erst mal in ein paar Structures gehalten und lade es zum Server, wenn der Nutzer "save" klickt.. Bis Windows XP konnte ich dann auch beim Programmende noch die letzten gehaltenen Datensätze abspeichern und dann das Programm schließen.

Leider ist es nicht ganz hilfreich, dass Windows nach XP nicht mehr darauf reagiert, wenn man WM_QUERY­END­SESSION abfängt.

Ich hab ein wenig in der Library gesucht und bin auf folgende Einträge gestoßen:

ShutdownBlockReasonCreate function
ShutdownBlockReasonDestroy function

Nun meine Frage: Wie setze ich das in PureBasic um? Ich würde bei einem Aufruf, mein Programm zu beenden, gern noch die letzten Änderungen an die Datenbank senden..

PureBasic scheint ShutdownBlockReasonCreate_() und ShutdownBlockReasonDestroy_() nicht zu kennen.

Re: Windows Shutdown Vista/7/8 (API)

Verfasst: 18.06.2012 18:16
von RSBasic
Dann importier es.
Beispielsweise:

Code: Alles auswählen

EnableExplicit

Define pSessionId

If OpenLibrary(0,"User32.dll")
  Prototype ShutdownBlockReasonDestroy(hWnd)
  Define ShutdownBlockReasonDestroy.ShutdownBlockReasonDestroy = GetFunction(0,"ShutdownBlockReasonDestroy")   
  
  ShutdownBlockReasonDestroy(WindowID(#Window))
  
EndIf
Getestet habe ich es aber nicht.

\\Edit:
Board-Suche kann helfen :): http://www.purebasic.fr/english/viewtop ... 13&t=45887

Re: Windows Shutdown Vista/7/8 (API)

Verfasst: 18.06.2012 18:36
von ts-soft
Der Prototype ist aber irgendwie umständlich im engl. Forum, besser:

Code: Alles auswählen

Prototype ProtoShutdownBlockReasonCreate(hWnd.i, pwszReason.p-Unicode)
dann kann man diese komische Unicodewandel routine wieder entfernen :mrgreen: