Thema: Backup Hero

Einzelnen Beitrag anzeigen

FarAndBeyond
(Gast)

n/a Beiträge
 
#9

AW: Backup Hero

  Alt 13. Jul 2016, 15:49
Zitat:
..es gibt von MS ein ganz gutes Tool für genau diesen Zweck (allerdings nur auf Kommandozeilenbasis): Robocopy ..
Das benutze ich auch... ist super schnell, klein und handlich, dazu 'ne *.bat und optional 'ne kleine GUI und schon ist man glücklich...

Ach ja, Robocopy ist eh schon mit an Bord (x86/x64)... zumindest ab Vista glaub' ich, aber es gibt auch für XP 'ne Version 5.1.1.1010 .. (Windows Server Resource Kit Tools) .. oder so ähnlich..

Es gibt auch Robocopy GUI schon fertig... hab' ich aber noch nie benutzt, unterstützt glaub' ich auch nicht alle Befehle...

Zitat:
- Verhindern das mehr als eine Instanz von Backup Hero läuft.
Das kann man ganz einfach so machen: (falls man keinen Bock auf Mutex oder Semaphore hat...)
Oder falls man gerne Lazarus benutzt, dann könnte man "UniqueInstance" ausprobieren... hab' zwei Versionen davon gefunden..
Delphi-Quellcode:
PROGRAM SetSysDateTime;

 USES
  Windows,
  Forms,
  SysUtils,
  Classes,
  uSetSysDateTime In 'uSetSysDateTime.pas';

  {$R *.RES}

 VAR
  slFoundWnd: TStringlist;


Procedure ErrorLog(ErrorInfo: String);
  Var
   slSave: TStringlist;
 Begin
  Try
   slSave:= TStringlist.Create;
    Try
     If FileExists('ErrorLog.txt')
     Then
      Begin
       Try
        slSave.LoadFromFile('ErrorLog.txt');
       Except
       End;
      End;

      slSave.Text:=

       DateTimeToStr(Now) +#13#10+
       ErrorInfo +#13#10+
       '' +#13#10+
       slSave.Text;

      slSave.SaveToFile('ErrorLog.txt');
    Finally
     slSave.Free;
    End;
  Except
  End;
 End;


Function SearchCallback(Wnd: HWND; lParam: LongInt): BOOL; StdCall;
  Var
   ClassName: Array[0..255] Of Char;
 Begin
  Try
   If GetClassName(Wnd, ClassName, 255) <> 0
   Then
    Begin
     If Pos('wndSetSysDateTime', String(ClassName)) <> 0
     Then slFoundWnd.Add(IntToStr(Wnd));
      Result:= True;
    End;
  Except
   On E: Exception
   Do ErrorLog('SearchCallback'+#13#10+E.ClassName+#13#10+E.Message);
  End;
 End;


Begin
 Try
  If (Screen.Width < 850) Or (Screen.Height < 480)
  Then
   Begin
    ErrorLog('Screen Resolution Must Be At Least 850x480');
    Exit;
   End;

   slFoundWnd:= TStringlist.Create;
    Try
     EnumWindows(@SearchCallback, 0);

     If slFoundWnd.Count >= 2
     Then Exit;
    Finally
     slFoundWnd.Free;
    End;

  Application.Initialize;
  Application.CreateForm(TwndSetSysDateTime, wndSetSysDateTime);
  Application.Run;
 Except
  On E: Exception
  Do ErrorLog('MAIN PRG'+#13#10+E.ClassName+#13#10+E.Message);
 End;
End.
Solange man in der IDE unterwegs ist auf 2 setzen und wenn alles fertig ist logischerweise auf 1.
SuperEasyMutex ... hahaha
If slFoundWnd.Count >= 1

EDIT:
Dein Programm hat 'ne coole Optik... sieht zumindest sehr aufgeräumt aus ...
Angehängte Dateien
Dateityp: zip UniqueInstance 1.0.zip (12,4 KB, 6x aufgerufen)
Dateityp: rar UniqueInstance V5.rar (15,1 KB, 6x aufgerufen)

Geändert von FarAndBeyond (13. Jul 2016 um 15:54 Uhr)
  Mit Zitat antworten Zitat