So, ich habe den Qelltext mal abgeändert.
aktueller Stand:
Delphi-Quellcode:
procedure TMainForm.WMPowerBroadcast(
var Msg: TMessage);
var path:
String;
const
PBT_APMQUERYSUSPEND = $0000;
PBT_APMBATTERYLOW = $0009;
PBT_APMQUERYSTANDBY = $0001;
PBT_APMQUERYSUSPENDFAILED = $0002;
PBT_APMQUERYSTANDBYFAILED = $0003;
PBT_APMSUSPEND = $0004;
PBT_APMSTANDBY = $0005;
PBT_APMRESUMECRITICAL = $0006;
PBT_APMRESUMESUSPEND = $0007;
PBT_APMRESUMESTANDBY = $0008;
PBTF_APMRESUMEFROMFAILURE = $00000001;
PBT_APMPOWERSTATUSCHANGE = $000A;
PBT_APMOEMEVENT = $000B;
begin
if Msg.wParam=PBT_APMRESUMESUSPEND
then
if (WUfromSuspendPrg<>'
')
and(Fileexists(WUfromSuspendPrg))
then
begin
// MessageDlg('Resume from Suspend Mode', mtInformation,[mbOk], 0);
path:=extractFilePath(WUfromSuspendPrg);
ShellExecute(
Handle,'
open',PChar(WUfromSuspendPrg),'
',PChar(Path),1);
end;
end;
Beim Erwachen aus dem Standby passier gar nichts. ShellExecute sollte zwar abgearbeitet werden aber es passiert nichts. Lasse ich den MessageDlg drin, wird das Batchfile nach dem OK sauber abgearbeitet.
Beim Erwachen aus dem Ruhezustand bekomme ich wieder eine Zugriffsverletzung ('
access violation at...".
Scheint also doch so zu sein, dass der Aufruf irgendwie zu früh erfolgt.
Gruß
BlackGuest