Autor Beitrag
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 16:54 
achso installdir ist das... wie gesagt hatte keine ahnung von den ganzen zeugs ;), das ist bisher nie mein gebiet gewesen ;)
und hier mit soll ich das jetzt bei delphi einbinden?

oder kurz ne andere frage, wo mus sich den schlüssel jetzt hinschreiben?


user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Einen Registry-Schlüssel kannst Du z.B. so auslesen:
ausblenden 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:
uses registry;

procedure GetInfo(Dest: String);
  const
    KEY       = 'Control Panel\Desktop';
    W_NAME    = 'Wallpaper';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;

   if OpenKey(KEY,False) then
    with TStringList.Create do
    try
      Add(W_NAME    + ': ' + ReadString(W_NAME));
    finally
      Free;
    end;

  finally
    Free;
  end;
end;

Hast du den Pfad zur Exe ausgelesen, kannst Du diese anschließend mit Shellexecute starten. ;)

Grüße,
Marc


in zeile 10?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 16:56 
Was Schlüssel und öffnen auf Englisch heißt, weißt du aber schon, oder? Wie wärs mit Key und open? Und um den zu öffnen eben OpenKey, also Zeile 12.

Und dass in Zeile 10 HKEY_LOCAL_MACHINE gehört, habe ich ja schon geschrieben.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 17:12 
uses
ausblenden Delphi-Quelltext
1:
 Windows, registry, usw....;					


buttoncick
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 17:15 
danke das hat mir noch gefehlt =)... aber wenn ich starten will gibt er mir ne fehlermeldung bei shellexecute an, hab das jetzt so kopiert von dir (Undefinierter Bezeichner)

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
uses
ausblenden Delphi-Quelltext
1:
 Windows, registry, usw....;					


buttoncick
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 17:16 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var regist : Tregistry;
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Key', false);
 shellexecute(application.handle, 'open', regist.readstring('install dir'nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;
  • Da fehlt komplett die Fehlerbehandlung
  • Der Schlüssel ist nicht der oben angegebene
  • ReadString gibt einen String zurück, ShellExecute erwartet aber einen PChar
  • Da fehlt die Endklammer von ReadString


user profile iconkulka1 hat folgendes geschrieben Zum zitierten Posting springen:
danke das hat mir noch gefehlt =)... aber wenn ich starten will gibt er mir ne fehlermeldung bei shellexecute an, hab das jetzt so kopiert von dir (Undefinierter Bezeichner)
Da fehlt noch ShellAPI unter uses.
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 17:25 
bei KEY habe ich jetzt Software\EA Sports\FIFA 09 hingeschrieben, also:

regist.openkey('Software\EA Sports\FIFA 09', false);


deinen punkt: ReadString gibt einen String zurück, ShellExecute erwartet aber einen PChar verstehe ich leider nicht ganz, was muss ich da denn verändern? und muss die klammer innen durch ein komme ersetzt werden oder muss da noch eine klammer dazu?


:D
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 17:28 
Einmal kein Kommentar von dir werd ich nie erleben.
Ich hab das kurz so abgetippt und ein bisschen überlegen für den Endnutzer schadet nicht das dort keine Fehlerbehandlung ist *wirst du kaum glauben* ist mir auch bewusst.
Und den Schlüssel kann er genauso selbst einsetzen.
Die klammer hätte ihm der compiler gesagt.
Pchar() ist das einzige was er vielleicht wirklich hätte nicht verstehen können. -.-

einfach
ausblenden Delphi-Quelltext
1:
shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')), nilnil, SW_show);					
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 17:32 
super danke...es geht endlich =)... jetzt hab ich nur noch ne frage :D ;)

beim klicken auf dem button wird ja immer ein neues fenster geöffnet, kann man jetzt noch einstellen das man einmal den "pfad" angibt und der das dann immer speichert, auch wenn das programm geschlossen wird und dann wieder aufgemacht wird? ist das möglich?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 17:34 
Wie meinst du das? Meinst du du willst gar kein Formular erst sehen? Dann brauchst du auch gar keins erst. Oder was meinst du?
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 17:36 
Also ist doch unnötig da nen Pfad zu speichern dafür hast du ja den Registry eintrag. ^^
Außer du meinst es anders wenn ja nochmal genau erläutern.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 17:39 
Ich glaube ich habs verstanden:
Da du einen Pfad öffnest und nicht die Exe, kommt halt immer der Windows Explorer... Du musst da natürlich den Namen der Exe noch anhängen... :roll:

Und damit das mit der Registry ordentlich dasteht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
uses
  Registry, ShellAPI;

var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(Handle, 'open', PChar(Reg.ReadString('Install Dir') + 'xyz.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 17:57 
1. In deinem Quellcode steht aber xyz.exe dabei wurde sie oben bereits genannt!
2. Warum unnötig Fragen ob der Wert existiert aber vielleicht liefert EAGAMES ja unterschiedliche Installations routinen aus. Und lässt ihn manchmal weg.^^ Oder noch besser ein Zufallsgenerator. XD
3. Welches Handle?

Wenn du schon so peinlich auf jede kleinigkeit achtest. -.-
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 17:59 
muss ich das hier denn dann so lassen? und den text den du geschrieben hast, muss der dann vor diesem hier? :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var regist : Tregistry;
procedure TForm1.Button1Click(Sender: TObject);
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')), nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 18:02 
XD Nein.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var regist : Tregistry; // Hier hin
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir') + Fifa) , nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 18:03 
user profile iconkulka1 hat folgendes geschrieben Zum zitierten Posting springen:
muss ich das hier denn dann so lassen? und den text den du geschrieben hast, muss der dann vor diesem hier?
Ähh... Dass die Quelltexte sich ähneln, siehst du aber schon, oder? :shock:
Wie wäre es, wenn du erst einmal verstehst was die machen, bevor du sie verwendest... :?

Die Quelltexte machen fast das selbe, nur einmal ohne Fehlerbehandlung usw.
Du musst bei meinem nur noch das xyz.exe durch fifa.exe ersetzen.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
1. In deinem Quellcode steht aber xyz.exe dabei wurde sie oben bereits genannt!
Das habe ich nicht gefunden gehabt auf die Schnelle, jetzt seh ichs auch.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
2. Warum unnötig Fragen ob der Wert existiert aber vielleicht liefert EAGAMES ja unterschiedliche Installations routinen aus.
Nein, aber es soll vorkommen, dass da ein Fehler auftritt und der Wert nicht da ist. Zum Beispiel passiert so etwas, wenn man ein programm einfach auf einen PC kopiert ohne es zu installieren.

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
3. Welches Handle?
Das des Formulars? Sonst hätte ich ja Application oder so dazugeschrieben...
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 18:11 
:D:D... also ich mache zz nur TurboPascal in der Schule im Informatikkurs, und Delphi bring ich mir sozusagen selber bei bevor wir das nächstes Schuljahr machen ;)

deswegen fällt mir das alles nicht so genau auf ;)
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 18:11 
Naja du denkst ein bisschen weit. ^^ Das programm wird warscheinlich eh nur auf seinem Rechner wenn überhaupt ausgeführt. ;)
Und gewöhn dich dran das mein Quelltext immer so aussieht ich schreib immer nur kurz und knapp. Damit die Leute noch was denken müssen.
Mir ging dein ständiges Klugscheißen grad einfach aufn nerv und hat mich i-wie in Wallung versetzt.

Nichts für ungut.

Und
ausblenden Delphi-Quelltext
1:
2:
3:
shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')+ 'Fifa 09.exe'), nilnil, SW_show);
// sofern die Exe so heißt.
// aber die Exe konnte auch umbennant worden sein.

NP wenn du Fragen hast kannst mir ne Pm schicken geb ich dir mein Icq und kannst mich direkt fragen. ^^
Dann nehm ich mir auch mehr Zeit.


Zuletzt bearbeitet von thepaine91 am Fr 29.05.09 18:12, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.05.09 18:12 
Oben stand fifa.exe ohne 09. ;-)
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 29.05.09 18:13 
*@!AHRG....* *Durchdreh* :motz: *jaenicke umbring!!!!* :evil:


XD Du musst mich hassen. XD
kulka1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: Fr 29.05.09 18:16 
es schaut jetzt so aus bei mir:

ausblenden 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:
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('Software\EA Sports\FIFA 09', False) and Reg.ValueExists('Install Dir'then
      ShellExecute(application.handle, 'open', PChar(Reg.ReadString('Install Dir') + 'fifa09.exe'), nilnil, SW_SHOWNORMAL)
    else
      ShowMessage('Spiel nicht gefunden');
  finally
    Reg.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var regist : Tregistry; // Hier hin
begin
 regist := Tregistry.create;
 regist.rootkey := hKEY_Local_machine;
 regist.openkey('Software\EA Sports\FIFA 09', false);
 shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir') + 'fifa09.exe') , nilnil, SW_show);
 regist.closekey;
 regist.Free;
end;


korrigiert mich bitte wennich was falsch habe -.-

und es kommt noch die fehlermeldung '.' erwartet aber ',' gefunden in zeile 12