![]() |
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. |
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.
|
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 |
Re: Programmpfad mit Parameter
Zitat:
1: Software\Lokas 2: Ltd\AWicons 3: Pro |
Re: Programmpfad mit Parameter
mahlzeit,
genau das ist ja das kniffelige daran gewesen. der string steht genauso in der registry. ohne gänsefüße. :( |
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:
cu
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+'"'); |
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