Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programmpfad mit Parameter (https://www.delphipraxis.net/53786-programmpfad-mit-parameter.html)

AndreasP 22. Sep 2005 13:29


Programmpfad mit Parameter
 
mahlzeit,

aus der registry lese ich stringwerte wie "C:\WINDOWS\AWuninstall.exe Software\Lokas Ltd\AWicons Pro" aus. doch wie erkenne ich nun das es sich dabei eigentlich um ein programm ("C:\WINDOWS\AWuninstall.exe") mit einem parameter ("Software\Lokas Ltd\AWicons Pro") handelt.

ich könnte zwar nach teilen wie ".exe " suchen doch das halte ich für nicht sehr praktikabel da ich auch nach anderen endungen suchen müste, wie z.b. .cmd, .bat, .msi usw. und wer sagt das ich nur ein resultat erhalte.

eigentlich will ich nur das programm mit parameter starten, entweder über shellexecute mit programm-pfad und parameter oder direkt wie bei win+r (wobei hier bestimmt auch nur der string zerlegt wird). danke schonmal für hinweise.

Thanatos81 22. Sep 2005 13:33

Re: Programmpfad mit Parameter
 
Soll das denn der Paraemter sein, der auch in der Registry eingetragen ist? Wenn ja, schau dir mal in der OH WinExec an. Wenn ich mich recht erinne, kann man da einen Pfad direkt mit Parametern eingeben wie im "Ausführen..."-Dialog per Win+R.

AndreasP 22. Sep 2005 14:19

Re: Programmpfad mit Parameter
 
mahlzeit,

danke für den hinweis, winexec war der richtige denkanstoß. da aber winexec kein unicode kann bin ich auf createprocess gestoßen der genau das macht was ich will. :-D

faux 22. Sep 2005 15:17

Re: Programmpfad mit Parameter
 
Zitat:

Zitat von AndreasP
"C:\WINDOWS\AWuninstall.exe Software\Lokas Ltd\AWicons Pro"

Das wären dann IMHO aber 3 Parameter:
1: Software\Lokas
2: Ltd\AWicons
3: Pro

AndreasP 22. Sep 2005 18:30

Re: Programmpfad mit Parameter
 
mahlzeit,

genau das ist ja das kniffelige daran gewesen. der string steht genauso in der registry. ohne gänsefüße. :(

sECuRE 22. Sep 2005 18:42

Re: Programmpfad mit Parameter
 
Hi,

ich finde die Sache recht einfach: von Zeichen 1 bis zur Position des ersten Leerzeichens geht der Programmpfad, wenn selbiger Leerzeichen enthält, muss der Pfad in Anführungszeichen gestellt sein. Alles darauf Folgende sind dann Parameter. Programmiertechnisch umsetzten würde ich das ganze so:
Delphi-Quellcode:
function GetProgramName(const AInput:string):string;
begin
if (Pos(' ',AInput) = 0) then
  result:=AInput
else if (copy(AInput,1,1) = '"') then
  result:=copy(AInput,1,Pos('"',copy(AInput,2,length(AInput))))
else result:=copy(AInput,1,Pos(' ',AInput)-1);
end;

// ...
ShowMessage('Das Program heißt "'+GetProgramName(ReadFromRegistry)+'"');

if (copy(ReadFromRegistry,1,1) = '"') then
  Parameters:=copy(ReadFromRegistry,length(GetProgramName)+3,length(ReadFromRegistry))
else Parameters:=copy(ReadFromRegistry,length(GetProgramName)+1,length(ReadFromRegistry));

ShowMessage('Die Parameter lauten "'+Parameters+'"');
cu

AndreasP 22. Sep 2005 19:00

Re: Programmpfad mit Parameter
 
mahlzeit,

sogesehen hast du recht. daran hatte ich in dem moment dummerweise nicht gedacht. bei meiner lösung mus ich mich allerdings nicht darum kommern wo der pfad aufhört und parameter anfängt. trotzdem danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz