Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DOS cmd befehle (https://www.delphipraxis.net/53844-dos-cmd-befehle.html)

Xenonz 23. Sep 2005 16:37


DOS cmd befehle
 
Hallo!
Gibt es eine Möglichkeit Dos Befehle, die man auch in der cmd.exe verwenden kann in Delphi zu benutzen?

Mfg Xenonz

NicoDE 23. Sep 2005 16:40

Re: DOS cmd befehle
 
Such mal nach "%ComSpec% /C"

DP-Maintenance 23. Sep 2005 16:46

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Internet / LAN / ASP.NET" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist eindeutig keine Frage zu Netzwerk usw.
Bitte etwas genauer auf die Spartenbeschreibung achten.

droppi 24. Sep 2005 13:03

Re: DOS cmd befehle
 
wenn du die gleichen befehle in delphi wie in der cmd.exe ausfüren willst versuchs mal mit
Delphi-Quellcode:
 windows.WinExec(pchar('der befehl'),1);
das 1 am ende legt fest ob der befehl auch angezeigt wird. bei 0 wird er versteckt ausgeführt, was aber z.B. bei taskmgr nicht sehr nützlich ist.

droppi

Luckie 24. Sep 2005 15:05

Re: DOS cmd befehle
 
Nimm aber bitte statt WinExec Shellexecute. WinExec ist nur noch wegen der Kompatibilität zu 16-Bit Programmen vorhaqnden und von Microsoft für obsolet erklärt worden. Unter Vista wird es diese API Funktion nicht mehr geben, da keine 16-Bit Programme mehr unterstützt werden laut Microsoft.

malo 24. Sep 2005 15:09

Re: DOS cmd befehle
 
Zitat:

Zitat von Luckie
Nimm aber bitte statt WinExec Shellexecute. WinExec ist nur noch wegen der Kompatibilität zu 16-Bit Programmen vorhaqnden und von Microsoft für obsolet erklärt worden. Unter Vista wird es diese API Funktion nicht mehr geben, da keine 16-Bit Programme mehr unterstützt werden laut Microsoft.

Außerdem müsste dann aber die Units geändert werden. Statt der Unit Windows benötigt man dann die Unit ShellAPI ;)

Xenonz 24. Sep 2005 17:43

Re: DOS cmd befehle
 
Dankeschön!
Also windows.WinExec(pchar('der befehl'),1); funktioniert wunderbar!
Jetzt zu shellexecute: Ich habe ShellApi eingebunden aber dieser Fehler kommt:
Incompatible Types 'HWND' and 'PChar'

Was muss ich da noch machen?
Also meine Zeile sieht so aus: shellexecute(pchar('der befehl'),1);

malo 24. Sep 2005 17:56

Re: DOS cmd befehle
 
MSDN-Library durchsuchenShellExecute

Da steht eigentlich alles nennenswerte... gerade, was die Parameter angeht.

Xenonz 24. Sep 2005 18:37

Re: DOS cmd befehle
 
Eigentlich wollte ich nur wissen wie man einen normalen Dos Befehl ausführt wie
windows.WinExec(pchar('der befehl'),1);
nur mit shellexecute.
Kannst du mir sagen wie man das macht? Sonst muss ich das alles durchsuchen von Microsoft...

Xenonz 25. Sep 2005 17:44

Re: DOS cmd befehle
 
Schade. Kann mir jemand anhand des Beispiels net send sagen wie man ShellExecute verwendet?

faux 25. Sep 2005 17:50

Re: DOS cmd befehle
 
Das zweite Ergebnis von MSDN-Library durchsuchenShellExecute hat mich zu diesem MSDN Eintrag geführt.

Zitat:

Zitat von MSDN
Code:
HINSTANCE ShellExecute(     
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
);


Xenonz 25. Sep 2005 17:55

Re: DOS cmd befehle
 
Danke!!!

Wie könnte man das jetzt auf net send beziehen?

marabu 25. Sep 2005 18:07

Re: DOS cmd befehle
 
So:

Delphi-Quellcode:
procedure TDemoForm.SendButtonClick(Sender: TObject);
var
  netexe, params: string;
begin
  netexe := GetEnvironmentVariable('windir') + '\system32\net.exe';
  params := '* "who is general failure?"';
  ShellExecute(Handle, 'open', PAnsiChar(netexe), PAnsiChar(params), nil, SW_HIDE);
end;
Voraussetzung ist, dass der Nachrichtendienst auch gestartet ist. Und wenn du das Ergebnis abwarten musst (bei net send eher nicht), dann suche nach ShellExecuteAndWait hier in der DP.

marabu

Xenonz 25. Sep 2005 18:13

Re: DOS cmd befehle
 
Aha...
Also noch ein paar Fragen:
1. was bedeutet handle an dieser Stelle und was könnte man dort noch schreiben?
2. was bedeutet pansichar? Dass er als Parameter eine Variabke vom Typ char verwenden soll?
3. wie 1. nur nil
4. Kann man anstatt SW_HIDE auch einfach False oder 0 eingeben?

Olli 25. Sep 2005 18:35

Re: DOS cmd befehle
 
Zitat:

Zitat von Xenonz
1. was bedeutet handle an dieser Stelle und was könnte man dort noch schreiben?

Ein Fensterhandle oder 0

Zitat:

Zitat von Xenonz
2. was bedeutet pansichar? Dass er als Parameter eine Variabke vom Typ char verwenden soll?

Nein, es handelt sich um einen Pointer auf eine nullterminierte Zeichenkette.

Zitat:

Zitat von Xenonz
4. Kann man anstatt SW_HIDE auch einfach False oder 0 eingeben?

0 ja, False nur über einen Typecast.

Zuguterletzt hat CMD.EXE soviel mit DOS zu tun wie belgisches "Bier" mit Bier.

Xenonz 25. Sep 2005 18:39

Re: DOS cmd befehle
 
Zitat:

Nein, es handelt sich um einen Pointer auf eine nullterminierte Zeichenkette.
Was ist das?

Was ist ein Fensterhandle?

Danke für die Antwort!

Olli 25. Sep 2005 18:46

Re: DOS cmd befehle
 
Zitat:

Zitat von Xenonz
Was ist das?

http://www.manuel-poeter.de/hitcount...ls/Strings.zip

Zitat:

Zitat von Xenonz
Was ist ein Fensterhandle?

Einfach eine Zahl, die innerhalb eines bestimmten Bereichs deines Systems ein Fenster eindeutig identifiziert.

Du solltest die definitiv Andreas Koschs Buch besorgen oder Luckies Win32-Tutorials durchstöbern!

Xenonz 25. Sep 2005 18:49

Re: DOS cmd befehle
 
OK Tut mir Leid :cry:
Aber nur noch 1: Was macht das nil?

Olli 25. Sep 2005 19:00

Re: DOS cmd befehle
 
Zitat:

Zitat von Xenonz
OK Tut mir Leid :cry:

Locker bleiben. Leidtun muß es dir nur dann, wenn du nicht selber lernen willst, weil dann weniger Leute helfen. Aber es war auch meinerseits nicht bös gemeint, nur weil ich dich an andere Quellen verwies ;)

Zitat:

Zitat von Xenonz
Aber nur noch 1: Was macht das nil?

Nil ist ein Nullpointer. Im Falle eines PAnsiChar oder PChar welchem Nil zugewiesen wird, handelt es sich um einen leeren String. Ansonsten variiert die Bedeutung je nach Pointertyp! Suche mal nach "Pointer" - hier im Forum und bei Google!

taktaky 16. Okt 2007 23:26

Re: DOS cmd befehle
 
Zitat:

Zitat von droppi
wenn du die gleichen befehle in delphi wie in der cmd.exe ausfüren willst versuchs mal mit
Delphi-Quellcode:
 windows.WinExec(pchar('der befehl'),1);
das 1 am ende legt fest ob der befehl auch angezeigt wird. bei 0 wird er versteckt ausgeführt, was aber z.B. bei taskmgr nicht sehr nützlich ist.

droppi

es geht aber das dos Fenster verschwendet kurz danach

Wie kann man das Ergebnis sehen oder wie kann man das Ergebnis in Delphi auslesen?

<>

Delphi Star 17. Okt 2007 05:08

Re: DOS cmd befehle
 
Ausgabe der Konsole in meinem Programm anzeigen

taktaky 17. Okt 2007 11:34

Re: DOS cmd befehle
 
Vielen Dank :thumb:

Das ist für interne Befehle

Und wie, wenn die Befehle extern sind z.B. msconfig
Das Fenster wird also als extern angezeigt und nicht in dos Fenster

Phoenix 17. Okt 2007 11:37

Re: DOS cmd befehle
 
Geht nicht.

taktaky 17. Okt 2007 12:08

Re: DOS cmd befehle
 
Zitat:

Zitat von Phoenix
Geht nicht.

Du hast meine Frage mit Sicherheit nicht gut verstanden

Ich möchte nur den Befehl msconfig von delphi an dos senden.
Ich meine nicht, das msconfig in Delphi integrieren oder den Inhalt fangen :mrgreen:

<>

Phoenix 17. Okt 2007 12:09

Re: DOS cmd befehle
 
Zitat:

Zitat von taktaky
Ich möchte nur den Befehl msconfig von delphi an dos senden.

Dafür gibts Delphi-Referenz durchsuchenShellExecute.

Progman 17. Okt 2007 12:19

Re: DOS cmd befehle
 
man sollte Taktaky mal darauf hinweisen, dass msconfig eine exe-Datei ist (msconfig.exe) ;)

taktaky 17. Okt 2007 12:32

Re: DOS cmd befehle
 
Zitat:

Zitat von Progman
man sollte Taktaky mal darauf hinweisen, dass msconfig eine exe-Datei ist (msconfig.exe) ;)

Ob es eine exe ist oder anderes ist mir egal, auf jedenfall externe.
Wenn ich den Befehl an dos sende, dann soll dos den Pfad von der Anwendung selbe suchen und nicht ich :mrgreen:

DeddyH 17. Okt 2007 12:33

Re: DOS cmd befehle
 
Es gibt kein Delphi für DOS. Versuch es mal mit Turbo Pascal. :twisted:

taktaky 17. Okt 2007 12:36

Re: DOS cmd befehle
 
Zitat:

Zitat von DeddyH
Es gibt kein Delphi für DOS. Versuch es mal mit Turbo Pascal. :twisted:

Was! Delphi schaft sowas kaum weiß ich. Ich meine von API

rollstuhlfahrer 16. Mai 2008 15:05

Re: DOS cmd befehle
 
ist zwar schon uralt, aber das lässt sich mit "cmd /C ..." oder "cmd /k ..." lösen. Schau doch einfach mal unter "cmd /?" wenn du nochmal hier vorbeikommst.

rollstuhlfahrer


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.

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