Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Winexec (https://www.delphipraxis.net/54322-winexec.html)

Heinz-Erich 1. Okt 2005 18:29


Winexec
 
Hi!

Ich würde gerne sowas machen wie Start/ausführen !

Funktionen
der benutzer soll in edit1 zb cmd eingeben dann auf button2 klicken dann soll das dos fenster kommen ;)

wie soll ich es machen?
Delphi-Quellcode:
winexec('', edit1.text, 1);
geht leider nicht :(

mfg Heinz-erich

Zacherl 1. Okt 2005 18:34

Re: Winexec
 
Bitte nicht WinExec benutzen sonder nur ShellExecute!
WinExec ist nur der Kompatibilität wegen vorhanden. Du musst die Unit ShellAPI einbinden und die Funktion folgendermaßen aufrufen.

ShellExecute(handle, 'open', PChar('Pfad zur Console'), PChar('Parameter'), PChar('Verzeichniss'), 1);

Florian

PierreB 1. Okt 2005 18:34

Re: Winexec
 
Machs einfach mit ShellExecute und übergib da den Wert aus dem Edit (In der Delphi-Hilfe solltest du ein Beispiel finden). Vergiss nicht die ShellAPI in die Uses-Liste aufzunehmen.

Olli 1. Okt 2005 18:35

Re: Winexec
 
Als erstes solltest du bitte MSDN-Library durchsuchenShellExecute statt WinExec benutzen und dann findest du zum Thema genügend hier im Forum: Hier im Forum suchenShellExecute!

Heinz-Erich 1. Okt 2005 18:49

Re: Winexec
 
suppi es geht alles!!!
bis auf was muss ich eingeben wenn der benutzer es in edit1 eingeben soll den befehl und sich dann der befehl öffnet?

Delphi-Quellcode:
ShellExecute(handle, 'open', PChar('cmd'), PChar(''), PChar('C:\'), 1);
hab ich

PierreB 1. Okt 2005 18:51

Re: Winexec
 
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(edit1.text), PChar(''), PChar('C:\'), 1);

Heinz-Erich 1. Okt 2005 18:52

Re: Winexec
 
ups parameter hab ich übersehen sry :P
danke fuer die hilfe ;)

Olli 1. Okt 2005 19:07

Re: Winexec
 
Statt 1 als letzten Parameter zu benutzen, gibt es auch noch diverse Konstanten, welche man bevorzugen sollte: SW_HIDE, SW_SHOW usw. nämlich.

Brüggendiek 2. Okt 2005 04:10

Re: Winexec
 
Hallo!

Da ist aber einer sehr inkonsequent:
Zitat:

Zitat von PierreB
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(edit1.text), PChar(''), PChar('C:\'), 1);

Entweder schreibe ich alle Strings mit PChar, also
Delphi-Quellcode:
ShellExecute(handle, PChar('open'), PChar(edit1.text), PChar(''), PChar('C:\'), SW_SHOW);
oder ich caste nur da, wo es auch notwendig ist. String-Literale (also das mit Hochkomma eingeschlossene) wird von Delphi nämlich automatisch umgewandelt, es reicht also:
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(edit1.text), '', 'C:\', SW_SHOW);
Diese Inkonsequenz findet man allerdings bei fast allen Posts zum Thema "ShellExecute". Bei anderen WinAPI-Aufrufen kommt eine solche Misch-Schreibweise seltsamerweise nicht vor.

Gruß

Dietmar Brüggendiek

Olli 2. Okt 2005 06:10

Re: Winexec
 
Zitat:

Zitat von Brüggendiek
[...] oder ich caste nur da, wo es auch notwendig ist. String-Literale (also das mit Hochkomma eingeschlossene) wird von Delphi nämlich automatisch umgewandelt, es reicht also:
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(edit1.text), '', 'C:\', SW_SHOW);

Noch konsequenter wäre jedoch
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(edit1.text), nil, 'C:\', SW_SHOW);
... was dann nämlich auch der Doku entspricht :zwinker:
Daß Nil und NULL in Delphi etwas anderes sind, ist eine andere Sache. Aber korrekter als ein Stringliteral wäre hier die Übergabe von Nil - ich weiß aber nicht, ob der Compiler es intern nicht sowieso schon macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Seite 1 von 2  1 2      

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