AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kopieren wenn Windows beendet wird

Ein Thema von Helmi · begonnen am 18. Sep 2006 · letzter Beitrag vom 18. Sep 2006
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 20:22
Hallo,

zum abfragen, ob Windows beendet wird verwend ich diesen Code:
Delphi-Quellcode:
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;
Nun würd ich gerne, wenn Win beendet wird, noch mit ShellApi eine Datei kopieren und erst wenn diese fertig ist, Windows beenden lassen.

Kopieren tu ich mit:
Delphi-Quellcode:
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;
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.

Wie kann ich es machen, dass beim Win-Beenden noch kopiert wird?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 20:31
Wenn der Computer in einer Domäne eingebunden ist kannst du auch Skripte bei der Abmeldung ausführen lassen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 20:32
Zitat von mkinzler:
Wenn der Computer in einer Domäne eingebunden ist kannst du auch Skripte bei der Abmeldung ausführen lassen.
nein das ist er nicht!

dies soll nur in meinem programm geschehen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 21:01
Delphi-Quellcode:
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;
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#5

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 22:03
Zitat:
//Windows erlauben zu beenden
Msg.Result := Integer(false);

//Kopieren

Msg.Result := Integer(true);
Was soll das denn bringen=
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 22:08
Das Herunterfahren pausieren, die Daten kopieren, Herunterfahren fortsetzen
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 ...
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#7

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 22:31
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 ( ) auf jeden Fall. Bei der shFileOperation wäre ich mir während des Herunterfahrens alles andere als sicher.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 22:42
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 MSDN-Library durchsuchenMoveFileEx (vielleicht kann man das ganze ja klug gestalten, und die Datei vorher kopieren, oder so ... ^^ is ja nur ne Idee).

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von zer00
zer00

Registriert seit: 7. Okt 2003
95 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Kopieren wenn Windows beendet wird

  Alt 18. Sep 2006, 23:40
Zitat von mkinzler:
Wenn der Computer in einer Domäne eingebunden ist kannst du auch Skripte bei der Abmeldung ausführen lassen.
Das geht per lokaler Gruppenrichtlinie auch ohne eine Domäne.
Start/Ausführen gpedit.msc.

Sorry ist ein wenig OT.
grz zer00
sei kühn, sei immer kühn, sei nicht zu kühn
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz