17. april 2001 - 15:12
Der er
2 kommentarer og
3 løsninger
Kopiering af filer, samt oprettelse af shortcuts i startmenuen og på skrivebordet... HELP!
Som der vist nok fremgår af overskriften, har jeg et lille problem med at kopiere filer, samt finde et StartMenuDir/DesktopDir.
Jeg vil give 250 point for følgende:
Et eksempel hvor man ved at klikke på en knap kopierer *.* fra et dir til et andet dir, og som opretter en genvej i startmenuen og på skrivebordet til en evt. exe-fil som netop er blevet kopieret. Håber ikke at det er at forlange for meget. På forhånd MANGE tak!!!
17. april 2001 - 15:31
#2
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure Copy(const Path, Dest: string);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Copy(const Path, Dest: string);
var
FileName: string;
SearchRec: TSearchRec;
begin
if FindFirst(Path + \'*.*\', faArchive, SearchRec) = 0 then
try
repeat
FileName := SearchRec.Name;
CopyFile(PChar(Path + FileName), PChar(Dest + FileName), True);
until FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Copy(\'c:\\\', \'c:\\ny mappe\\\');
end;
17. april 2001 - 23:16
#3
Her er vist hvad du skal bruge...
jeg har lånt lidt af dig Borrisholt, håber det er okay når du selv har ref.\'et i spg.\'et?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, registry, ComObj, ActiveX, ShlObj, FileCtrl, FileHandling;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
programfil, startdir: string;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
SysDir: PChar;
desktop, genvejstartdir, fra, til, fil: string;
dirl: integer;
VI : TOSVersionInfo;
reg: Treginifile;
SL: IShellLink;
PF: IPersistFile;
LnkName: WideString;
begin
fra := \'c:\\ziron\\*.*\';
til:= \'c:\\ziron_ny\\\';
// fil := Den nye dir (til) + filnavn.
fil := til + \'den fil du vil bruge.exe\';
// Brug af borrisholts copyfiles. (du skal huske at have FileHandling i uses.)
FileHandling.CopyFiles(fra, til);
// Opretter genvej på skrivebordet.
reg := Treginifile.Create;
reg.RootKey :=HKEY_CURRENT_USER;
desktop := reg.ReadString(\'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\', \'Desktop\', \'c:\\\');
reg.Free;
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL)); { IShellLink implementers are required to implement IPersistFile }
PF := SL as IPersistFile;
OleCheck(SL.SetPath(PChar(fil))); // set link path to proper file
SL.SetWorkingDirectory(PChar(ExtractFilePath(fil)));
LnkName := Desktop + #92 + ChangeFileExt(ExtractFileName(fil), \'.lnk\');
PF.Save(PWideChar(LnkName), True); // save link file
// Opretter genvej i startmenuen.
reg := Treginifile.Create;
reg.RootKey :=HKEY_CURRENT_USER;
genvejstartdir := reg.ReadString(\'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\', \'Start Menu\', \'c:\\\');
reg.Free;
genvejstartdir := genvejstartdir + \'\\Programmer\\\';
genvejstartdir := genvejstartdir + \'hvis du nu vil have flere underbiblotekker, fx hej\\med\';
ForceDirectories(genvejstartdir);
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL)); { IShellLink implementers are required to implement IPersistFile }
PF := SL as IPersistFile;
OleCheck(SL.SetPath(PChar(fil))); // set link path to proper file
SL.SetWorkingDirectory(PChar(ExtractFilePath(fil)));
LnkName := genvejstartdir + #92 + ChangeFileExt(ExtractFileName(fil), \'.lnk\');
PF.Save(PWideChar(LnkName), True); // save link file
end;
end.
Håber det var hvad du søgte?
/ZIRON
18. april 2001 - 13:14
#4
Wow! Thx, det er lige nøjagtig hvad jeg har søgt! Og det er jo noet godt forklaret ziron! Anyway, i har jo alle svaret på det så jeg gir 50 til nico22 og borrisholt, og 150 til ziron... ok?
Thx