| Autor |
Beitrag |
kulka1 
      
Beiträge: 81
|
Verfasst: 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?
Marc. hat folgendes geschrieben : | Einen Registry-Schlüssel kannst Du z.B. so auslesen:
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
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 29.05.09 17:12
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Fr 29.05.09 17:15
|
|
jaenicke
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 29.05.09 17:16
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: 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?

|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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
Delphi-Quelltext 1:
| shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')), nil, nil, SW_show); |
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Fr 29.05.09 17:32
super danke...es geht endlich =)... jetzt hab ich nur noch ne frage
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
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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...
Und damit das mit der Registry ordentlich dasteht: 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'), nil, nil, SW_SHOWNORMAL) else ShowMessage('Spiel nicht gefunden'); finally Reg.Free; end; end; |
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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 
      
Beiträge: 81
|
Verfasst: 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? :
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')), nil, nil, SW_show); regist.closekey; regist.Free; end; |
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 29.05.09 18:02
XD Nein.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var regist : Tregistry; 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) , nil, nil, SW_show); regist.closekey; regist.Free; end; |
|
|
jaenicke
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 29.05.09 18:03
kulka1 hat folgendes geschrieben : | | 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?
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.
thepaine91 hat folgendes geschrieben : | | 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.
thepaine91 hat folgendes geschrieben : | | 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.
thepaine91 hat folgendes geschrieben : | | 3. Welches Handle? |
Das des Formulars? Sonst hätte ich ja Application oder so dazugeschrieben...
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Fr 29.05.09 18:11
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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
Delphi-Quelltext 1: 2: 3:
| shellexecute(application.handle, 'open', Pchar(regist.readstring('install dir')+ 'Fifa 09.exe'), nil, nil, SW_show); |
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
      
Beiträge: 19335
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 29.05.09 18:12
Oben stand fifa.exe ohne 09. 
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 29.05.09 18:13
*@!AHRG....* *Durchdreh*  *jaenicke umbring!!!!*
XD Du musst mich hassen. XD
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Fr 29.05.09 18:16
es schaut jetzt so aus bei mir:
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'), nil, nil, SW_SHOWNORMAL) else ShowMessage('Spiel nicht gefunden'); finally Reg.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); var regist : Tregistry; 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') , nil, nil, 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
|
|
|