Prog in Autostart verschieben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von MisterJ, 24. Mai 2006 .

  1. 24. Mai 2006
    Hi Leute!

    Ich hab ein Prog namens dday.exe in Delphi gecodet und will, dass es sich beim Start selbst in den Autostartordner verschiebt. OS ist WinXP Pro. Wie lässt sich das machen?
     
  2. 24. Mai 2006
    Muss dein Prog umbedingt in den Autostartordner verschoben werden oder reicht es, wenn es von dem aktuellen Ort aus, beim Windows start ausgeführt wird ?
     
  3. 24. Mai 2006
    ich würde nen Dephie Befehl zum kopieren nehmen und dann die Datei ins Verzeichnis
    Dokumente Und Einstellungen\All Users\Programme\Autostart kopieren
     
  4. 24. Mai 2006
    Wie seiht dazu der code aus?
     
  5. 24. Mai 2006
    Code:
    If ExtractFilePath(Application.Exename) <> 'C:\Dokumente Und Einstellungen\All Users\Programme\Autostart' then
    begin
     Copyfile(Application.Exename, 'C:\Dokumente Und Einstellungen\All Users\Programme\Autostart\' + ExtractFileName(Application.Exename);
     //Hier kannste deine Exe noch deleten, oder die kopierte ausführen
    end;
    
    Such dir aber lieber den Ordner für den jeweiligen User raus.
    Nach der API muste mal in einem Forum suchen oder so.
     
  6. 24. Mai 2006
    Code:
    [Fehler] main.pas(53): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'
    [Fehler] main.pas(53): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'
    [Fataler Fehler] dday.dpr(5): F2063 Verwendete Unit 'main.pas' kann nicht compiliert werden
    ???
     
  7. 24. Mai 2006
    Das ganze Prog erinnert mich stark an C++ und da gibt's ein ähnliches Problem, weil die Funktion für Copyfile zwei chars erwartet du dem aber String zu futtern gibst. Bei C++ heißt die Funktion um ausm String en char zu machen .c_str() wenn's dass bei Delphi auch geben sollte... dann sollte es so funktionieren....

    Code:
    If ExtractFilePath(Application.Exename) <> 'C:\Dokumente Und Einstellungen\All Users\Programme\Autostart' then
    begin
     Copyfile(Application.Exename.c_str(), AnsiString('C:\Dokumente Und Einstellungen\All Users\Programme\Autostart\' + ExtractFileName(Application.Exename).c_str());
     //Hier kannste deine Exe noch deleten, oder die kopierte ausführen
    end;
    
    Aber wie so viele wissen is Delphi net C++ und es kann sein das dass jetzt überhaupt gar net funktioniert... Dann solltest du nach ner Funktion in Delphi suchen, die einen String in Char umwandelt.

    mfg
     
  8. 24. Mai 2006
    Sry.. hatte ich vergessen. Du musst noch einen Typecast machen -> PChar(STRING)
     
  9. 24. Mai 2006
    Code:
    procedure Kopieren;
    var
     mem : TMemoryStream;
     FilePathA, FilePathB : String;
    begin
     FilePathA := 'C:\Daten\Test.exe'; // Pfad der zu kopierenden Datei
     FilePathB := 'C:\Programme\Test\Test.exe'; // Zielpfad
     mem := TMemoryStream.Create;
     try
     mem.LoadFromFile(filePathA);
     mem.SaveToFile(FilepathB);
     finally
     mem.Free;
     end;
    end;
    
    Natürlich noch die Pfade anpassen.
     
  10. 24. Mai 2006
    Ich würde sagen, das ist eine der dümmsten Möglichkeiten Dateien zu kopieren.
    Du lädst vorher alles in den Ram, bei größeren Dateien dauert das ewig.
     
  11. 24. Mai 2006
    Wobei sicher nicht davon auszugehen ist, das seine Datei riesig ist.

    PS... Warum dumm?! Bei kleinen Dateien auf jeden Fall zu empfehlen.
     
  12. 25. Mai 2006
    So, und wenn ich FilepathA nicht weiß und ich nicht weiß, wie der Benutzer heißt, der das in den Autostart bekommen soll?
     
  13. 25. Mai 2006
    FilepathA kannst du relativ angeben, sprich 'DeineExe.exe'.

    Dann könntest du die Datei in den Autostart aller User kopieren: C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart\
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.