Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Kopiervorgang abbrechen (https://www.delphipraxis.net/156962-windows-kopiervorgang-abbrechen.html)

Ascuriah 22. Dez 2010 09:51

Windows Kopiervorgang abbrechen
 
Hallo DP´ler

Ich habe in meinem aktuellen Projekt eine Stelle bei der Windows den Kopiervorgang startet (die Meldung mit "Wollen sie XXXX ersetzen" usw...). Nun habe ich gerade gemerkt das der Abbrechen Button dieses Frames zwar das Kopierfenster schliest mein Programm aber normal weiterläuft. Daher die Frage, kann mir jemand sagen wie ich auf des Abbrechen Events des Windows-Kopiervorgangs reagieren kann? Hab leider keinerlei Idee und durch die SUFU hab ich nix entdeckt.

Danke
mfg

Ascu

DeddyH 22. Dez 2010 09:54

AW: Windows Kopiervorgang abbrechen
 
Wie kopierst Du denn? SHFileOperation?

Ascuriah 22. Dez 2010 10:17

AW: Windows Kopiervorgang abbrechen
 
Jap tu ich mit dieser Funktion
Delphi-Quellcode:
function copydir(_sfromDir: string; _stoDir: string): boolean;
var
   fos: TSHFileOpStruct;
begin
   ZeroMemory(@fos, SizeOf(fos));
   with fos do
   begin
      wFunc := FO_COPY;
      fFlags := FOF_FILESONLY;
      pFrom := PChar(_sfromDir + #0);
      pTo   := PChar(_stoDir)
   end;
   Result := (0 = ShFileOperation(fos));
end;
Außerdem merke ich gerade wenn das Verzeichnis noch nicht vorhanden ist, fragt mich Windows ob ich dieses erstellen möchte, naja und dieses Fenster reagiert quasi auch nicht auf Abbrechen (überprüfung ob verzeichins vorhanden oder nicht mache ich mit directoryexists welche ja in der FileCtrl steht)

DeddyH 22. Dez 2010 10:23

AW: Windows Kopiervorgang abbrechen
 
Aus dem MSDN zu SHFileOperation:
Zitat:

Returns zero if successful; otherwise nonzero. Applications normally should simply check for zero or nonzero.

It is good practice to examine the value of the fAnyOperationsAborted member of the SHFILEOPSTRUCT. SHFileOperation can return 0 for success if the user cancels the operation. If you do not check fAnyOperationsAborted as well as the return value, you cannot know that the function accomplished the full task you asked of it and you might proceed under incorrect assumptions.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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