AGB  ·  Datenschutz  ·  Impressum  







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

Copy Windowsfenster minimiert starten

Ein Thema von ScharfeMietze · begonnen am 7. Aug 2016 · letzter Beitrag vom 8. Aug 2016
 
t.roller
(Gast)

n/a Beiträge
 
#6

AW: Copy Windowsfenster minimiert starten

  Alt 7. Aug 2016, 15:15
So geht's:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Winapi.ShellAPI, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    cbSHOW: TCheckBox;
    ASource: TEdit;
    ADest: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Status: TLabel;
    lbERROR: TLabel;
    ARenameCheck: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure CopyInThread(ASource, ADest : String);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  myThread: TThread;

implementation

{$R *.dfm}

procedure TForm1.CopyInThread(ASource, ADest : String);
var aThread : TThread;
  sh: TSHFileOpStruct;
  Err : Integer;
begin
  aThread :=
    TThread.CreateAnonymousThread(
      procedure
      begin
        sh.lpszProgressTitle:= PChar('MyCopier');
        sh.Wnd := 0;// Application.Handle;
        sh.wFunc := FO_COPY;
        sh.pFrom := PChar(ASource + #0#0);
        sh.pTo := PChar(ADest + #0#0);
        sh.fFlags := FOF_NOCONFIRMATION or fof_MultiDestFiles or FOF_NOCONFIRMMKDIR;
        if ARenameCheck.Checked then
        sh.fFlags := sh.fFlags or fof_RenameOnCollision;
        Err:=ShFileOperation(sh);
        if Err <> 0 then
          begin
          ShowMessage('Error: ' + inttostr(Err) + ' '  + SysErrorMessage(GetLastError));
          end;
      end);

  aThread.FreeOnTerminate := True;
// aThread.OnTerminate := ...
  aThread.Start;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Handle: THandle;
    strSource, strDest : String;
begin
strSource:= ASource.text;
strDest:= ADest.text;
CopyInThread(strSource, strDest);
if NOT cbSHOW.Checked then // CheckBox
BEGIN
  Sleep(2000); // Wichtig!!! Warten bis COPY-WINDOW vorhanden ist.
  Application.ProcessMessages;
  Handle:= FindWindow(PChar('OperationStatusWindow'), nil);
  if Handle <> 0 then ShowWindow(Handle, SW_MINIMIZE);
  Self.SetFocus;
END;
  Winapi.Windows.Beep(1500,200);
end;

end.

Geändert von t.roller ( 7. Aug 2016 um 19:43 Uhr)
  Mit Zitat antworten Zitat
 


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 23:13 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