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 ...