![]() |
Kopieren wenn Windows beendet wird
Hallo,
zum abfragen, ob Windows beendet wird verwend ich diesen Code:
Delphi-Quellcode:
Nun würd ich gerne, wenn Win beendet wird, noch mit ShellApi eine Datei kopieren und erst wenn diese fertig ist, Windows beenden lassen.
procedure TMainForm.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin //Windows erlauben zu beenden Msg.Result := 1; //Wenn Windows beendet wird, dann Variable auf true setzen Windows_Session_End := true; //Programm schliessen close; inherited; end; Kopieren tu ich mit:
Delphi-Quellcode:
Wenn ich nun die kopierfunction in die obere procedure einbinde, dann bekomm ich eine Fehlermeldung, dass die datei nicht kopiert werden konnte, oder der Datenträger nicht mehr vorhanden sei.
function ShellFileOperation(Quelle: string; Ziel: string; Flags: Integer): Boolean;
var shellinfo: TSHFileOpStructA; begin with shellinfo do begin wnd := Application.Handle; wFunc := Flags; pFrom := PChar(Quelle); pTo := PChar(Ziel); end; Result := SHFileOperation(shellinfo) = 0; end; Wie kann ich es machen, dass beim Win-Beenden noch kopiert wird? |
Re: Kopieren wenn Windows beendet wird
Wenn der Computer in einer Domäne eingebunden ist kannst du auch Skripte bei der Abmeldung ausführen lassen.
|
Re: Kopieren wenn Windows beendet wird
Zitat:
dies soll nur in meinem programm geschehen |
Re: Kopieren wenn Windows beendet wird
Delphi-Quellcode:
Florian
procedure TMainForm.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin //Windows erlauben zu beenden Msg.Result := Integer(false); //Kopieren Msg.Result := Integer(true); //Wenn Windows beendet wird, dann Variable auf true setzen Windows_Session_End := true; //Programm schliessen close; inherited; end; |
Re: Kopieren wenn Windows beendet wird
Zitat:
|
Re: Kopieren wenn Windows beendet wird
Das Herunterfahren pausieren, die Daten kopieren, Herunterfahren fortsetzen :wink:
Kann sein, dass es unnötig ist, das Result erst auf false zu setzen, aber den Kopiervorgang sollte man auf jeden Fall im MessageHandler durchführen ... |
Re: Kopieren wenn Windows beendet wird
Das hin und her-setzen ist auf jeden Fall unnötig, da Windows das Result erst beim Verlassen deines Eventhandlers zugespielt wird.
Als ein Problem könnte sich allerdings der Shutdown-Timeout herausstellen. Wenn der Kopiervorgang zu lange dauert, könnte es passieren, dass Windows deine Anwendung "abschießt". PS. würde ich versuchen mit copyFile zu arbeiten. Denn diese Funktion funktionieret ( :-D ) auf jeden Fall. Bei der shFileOperation wäre ich mir während des Herunterfahrens alles andere als sicher. |
Re: Kopieren wenn Windows beendet wird
Du könntest die Dateien auch beim Systemstart *verschieben* lassen, falls sie nicht zwingend beim Herunterfahren kopiert werden muss (ich weiß ja ned was du vor hast), siehe dazu
![]() ciao, Philipp |
Re: Kopieren wenn Windows beendet wird
Zitat:
Start/Ausführen gpedit.msc. Sorry ist ein wenig OT. ;) grz zer00 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz