Einzelnen Beitrag anzeigen

Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Verzeichniss kopieren, aber "Abbrechen" deakti

  Alt 13. Dez 2006, 01:25
Ich habe es jetzt mit einem Thread gelöst

Aufruf:
Delphi-Quellcode:
...

  ThreadRunning := True;
  AppExiting := False;
  TFindWnd.Create(False);
  CopyDir(DataDir + '*', 'C:\Test');
  AppExiting := True;
  while ThreadRunning = True do
    Application.ProcessMessages;

...

Thread:
Delphi-Quellcode:
unit thread_FindWnd;

interface

uses
  Classes, SysUtils, Windows, frm_Copydata;

type
  TFindWnd = class(TThread)
  private
    { Private-Deklarationen }
    procedure GetState;
    procedure Done;
  protected
    procedure Execute; override;
  end;

var
  AppExiting: boolean;

implementation

{ Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
  nur in einer Methode namens Synchronize aufgerufen werden, z.B.

      Synchronize(UpdateCaption);

  und UpdateCaption könnte folgendermaßen aussehen:

    procedure WebUpdate.UpdateCaption;
    begin
      Form1.Caption := 'Aktualisiert in einem Thread';
    end; }


{ WebUpdate }

procedure TFindWnd.GetState;
begin
  AppExiting := frm_CopyData.AppExiting;
end;

procedure TFindWnd.Done;
begin
  frm_CopyData.ThreadRunning := False;
end;

procedure TFindWnd.Execute;
var
  wnd: HWND;
  textlength: Integer;
  Text: PChar;
  mycap: string;
  CText: array[0..255] of char;
begin
  wnd := 0;
  try
    while wnd = 0 do
    begin
      Synchronize(GetState);
      if AppExiting then
        Exit;
      wnd := windows.GetForegroundWindow;
      GetClassName(wnd, CText, 255);
      if StrPas(CText) = '#32770then
      begin
        wnd := FindWindowEx(wnd, 0, 'Button', nil);
        windows.GetWindowText(wnd, CText, 255);
        if StrPas(CText) = 'OKthen
          wnd := 0;
        if wnd <> 0 then
          windows.EnableWindow(wnd, False);
      end
      else
        wnd := 0;
    end;
  finally
    Synchronize(Done);
  end;
end;

end.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat