Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
15. Mai 2006
Ich habe jetzt eine Lösung für mein Problem gefunden und poste sie hier:
Oben in der Definition der Form müssen folgende 2 Einträge hinzugefügt werden:
procedure WMPowerBroadcast(var Msg: TWMPower); message WM_POWERBROADCAST
readyforsuspend:boolean;
Und im Code-Abschnitt die folgenden 3 Prozeduren:
Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
14. Mai 2006
Das ist mir schon klar. Ich hab nur Probleme damit, zu Überprüfen, ob das WM_Powerbroadcast auch wegen dem Ruhezustand ausgelöst wurde und nicht wegen z.B. einem Reboot.
Diese Impementierung
if msg.msg=PBT_APMQUERYSUSPEND then
scheint jedenfalls nicht zu funktionieren.
Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
14. Mai 2006
@treiber: vielleicht eine Stufe zu brutal ;)
ich will den Ruhezustand ja nur verhindern, um dann meine Sachen zu speichern, was unter Umständen länger als 20 Sekunden dauern kann, und dann den Ruhezustand selbst auslösen, so dass es dem User nur "verzögert" scheint.
Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
14. Mai 2006
Inzwischen bin ich so weit gekommen:
procedure TForm1.WMPowerBroadcast(var Msg: TWMPower);
begin
showmessage('got message: wmpowerbroadcast');
if ((msg.msg=PBT_APMQUERYSUSPEND) and (not readyforsuspend)) then
begin
showmessage('message is pbt_apmquerysuspend');
Msg.Result := BROADCAST_QUERY_DENY;
if messagedlg('denied. suspend?',mtinformation,,0)=mryes then
Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
11. Apr 2006
ich mach halt einfach eine boolean-Variable etwa so:
procedure getmessage;
begin
if bool then exit;
post(abbruchmessage);
bool:=true;
save;
post(shutdownmessage);
Forum: Win32/Win64 API (native code)
Delphi
by ichbins,
11. Mär 2006
Hi, wie geht das?
ich habe ein Programm das "vertrauliche Daten" anzeigen kann, und wenn der User jetzt den Ruhezustand auslöst, will ich das blockieren, alle Daten speichern + beenden und dann selbst den Ruhezustand auslösen, so dass nicht beim nächsten Start die Daten wieder angezeigt werden.
nen Code für Ruhezustand auslösen hab ich irgendwo hier schon mal gefunden, das ist kein Problem....