Entwickler-Ecke

Dateizugriff - Autostart


fusco123 - Mi 19.03.08 18:51
Titel: Autostart
Hey,
wie kann ich das Programm, dass Delphi grade benutzt in Autostart eintragen, habe zwar schon dAs hier gelesen: http://www.delphi-treff.de/tipps/applikation/tipp/156/
finde es allerdings viel zu lang mit den ganzen abfragen, kann man nicht das einfach bei allen eintragen, bei manchen gehts dann halt nicht ...
fusco


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 19.03.2008 um 22:46


nagel - Mi 19.03.08 23:30

Wenn du schon was gefunden hast, das dir sogar fertigen Quellcode mitliefert, warum willst du's dann nicht benutzen?


Yogu - Mi 19.03.08 23:45

Die Funktion wurde doch schon für dich programmiert. Und das hier musst du noch selber schreiben (steht übrigens auch schon drin):


Delphi-Quelltext
1:
CreateAutorunEntry(Application.Title, ParamStr(0), akUserRunOnce);                    

Wenn dir das noch zu lang ist, dann weiß ich auch nicht mehr weiter. Arg viel kürzer geht es nicht mehr.


fusco123 - Fr 21.03.08 21:20

die funktion von der webseite geht bei mir net, weil Tautorunkind unbekannt ist genaus wie akind und so...
obwohl ich sie bei Type deklariert habe


blaskito - Fr 21.03.08 22:23

Hallo,

ich würde es so machen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg:TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.Rootkey:=HKEY_CURRENT_USER;
  Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',True);
  Reg.WriteString(ProgName,ProgDatei);
  Reg.CloseKey;
  Reg.Free;
end;


"Registry" musst du natürlich in die uses-Klausel mit aufnehmen. Das Beispiel kannst du natürlich variieren, in dem du z.B. HKEY_LOCAL_MACHINE verwendest (wenn du die Rechte hast). Für ProgName verwendest du einen beliebigen Titel und bei ProgDatei z.B. Application.Exename.

Gruß aus dem Norden
blaskito


Delete - Fr 21.03.08 22:27

user profile iconfusco123 hat folgendes geschrieben:
die funktion von der webseite geht bei mir net, weil Tautorunkind unbekannt ist genaus wie akind und so...
obwohl ich sie bei Type deklariert habe

Eventuell hilft es den ganzen Text zu lesen. Dann würde man auch auf diese Deklaration stossen:

Delphi-Quelltext
1:
type TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce);                    


@blaskito: Das ist aber sehr optimistisch programmiert, keinerlei Ressourcenchutzblock und keinerlei Fehlerbehandlung.


blaskito - Fr 21.03.08 23:03

@luckie
... ist schon richtig aber ich habe mal gehört, Optimisten leben besser. Dennoch: du hast natürlich vollkommen recht.

Gruß aus dem Norden
blaskito


Yogu - Sa 22.03.08 12:10

user profile iconfusco123 hat folgendes geschrieben:
die funktion von der webseite geht bei mir net, weil Tautorunkind unbekannt ist genaus wie akind und so...
obwohl ich sie bei Type deklariert habe

user profile iconLuckie hat folgendes geschrieben:
Eventuell hilft es den ganzen Text zu lesen. Dann würde man auch auf diese Deklaration stossen:

Delphi-Quelltext
1:
type TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce);                    

user profile iconfusco123: Kannst du vielleicht den ganzen Quelltext posten? Vielleicht finden wir dann den Fehler...


der organist - Mi 08.04.09 14:58

ich hab damit das Problem, dass CreateAutorunEntry undecleared ist, selbes für das akUserRun. Weils bisher noch recht kurz ist, stelle ich mal den ganzen Unitquelltext rein:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateAutorunEntry(Application.Title, ParamStr(0), akUserRun);
end;

end.


Xentar - Mi 08.04.09 15:16

Die Sachen, die bei dir als "undefiniert" markiert werden, stehen in dem Tipp ca. 10 Zeilen dadrüber...

Das Thema ist übrigens auch schon was älter.


der organist - Mi 08.04.09 15:25

ich weiss, das das Thema schon älter ist, aber die Probleme ich ich beim Programmieren habe, passen (A) gut hier rein und (B) sind sie durch dieses Thema erst entstanden.....

und was ist mit dem Aufruf? Das CreateAutorunEntry ist auch nicht definiert.


Xentar - Mi 08.04.09 15:33

Lies den Tipp nochmal.


der organist - Mi 08.04.09 15:36

funzt alles.