Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Shellexecute Stringvariabel anstatt stattische Dateiangabe (https://www.delphipraxis.net/69078-shellexecute-stringvariabel-anstatt-stattische-dateiangabe.html)

Jessa 10. Mai 2006 00:00


Shellexecute Stringvariabel anstatt stattische Dateiangabe
 
Schon wieder ich...

Ich hab nun immer noch ein Problem, das Programm was ich schreibe fügt nämlich mithilfe von String addieren ein eigendne Pfad sowie Ortsangabe zusammen.

Auf Deutsch muss ich ins ShellExecute nun einen String benutzen wenn es so laufen soll wie ich es will und nicht eine Eingabe wie 'c:\windows\datei.exe'.

Nur kommt dann immer der Fehler Inkompatible Typen: 'String' und 'PAnsiChar'.

Statische Möglichkeit
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'c:\windows\datei.exe', nil, nil, SW_SHOWNORMAL);
Doch ich möchte die Dynamische Variante und mit z (string) diesen Pfad verwenden, dabei ist z.b. z := 'c:\windows\system32\notepad.exe';.
Delphi-Quellcode:
ShellExecute(Handle, 'open', z, nil, nil, SW_SHOWNORMAL);
Weiß wer weiter wie ich dieses Problem löse?

Hawkeye219 10. Mai 2006 00:15

Re: Shellexecute Stringvariabel anstatt stattische Dateianga
 
Hallo Jessa,

Ein TypeCasting sollte hier helfen:

Delphi-Quellcode:
ShellExecute(Handle, 'open', PChar(z), nil, nil, SW_SHOWNORMAL);
Gruß Hawkeye

Jessa 10. Mai 2006 00:42

Re: Shellexecute Komandozielen Programm ausführen
 
Oh danke, das war ein guter Weg. Nun wie ist es denn mit Programmen mit Konsolenbefehlen?

"net start dienstname" z.b. wenn man ihn in der Konsole (CMD) aufruft? Leider klappt es bisher nicht.

nat 10. Mai 2006 05:19

Re: Shellexecute Stringvariabel anstatt stattische Dateianga
 
dann mußt du den 4. parameter auch verwenden (der bei dir nil is).
der gib die parameter an. der 3. parameter gibt nur das zu startende file an.

du müsstest also
Delphi-Quellcode:
ShellExecute(0, 'open', 'net', 'user', nil, SW_SHOW);
bzw. wenn du auch was sehen willst
Delphi-Quellcode:
ShellExecute(0, 'open', 'cmd', ' /k net user', nil, SW_SHOW);
machen

Jessa 10. Mai 2006 09:38

Re: Shellexecute Stringvariabel anstatt stattische Dateianga
 
Nun der Befehl funktioniert und die gewünschte Funktion auch nur mit folgenden Problemen:

1. Es öffnen sich 2 Konsolen, eine führt den Befehl aus die andere sagt das es schon ausgeführt wird.

2. Wie kann ich Shellexecute veranlassen darauf die cmd (Konsole) wieder zu schließen?

ManuMF 10. Mai 2006 14:52

Re: Shellexecute Stringvariabel anstatt stattische Dateianga
 
Hallo,

zu 2.: Mit dem Parameter /C (zu den anderen).

Gruß,
ManuMF


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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