Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   CMD mit Output (https://www.delphipraxis.net/199970-cmd-mit-output.html)

Willie1 6. Mär 2019 17:54

Delphi-Version: 10.1 Berlin

CMD mit Output
 
Hallo Leute,
wie immer, werde ich hier im Forum fündig. Suchte nach CMD mit Output:

https://www.delphipraxis.net/169697-...t-ausgabe.html

Michael (Alleinherrscher) ist ja fleißig gelobt worden, dem kann ich mich nur anschließen. Aber ein Haar in der Suppe habe ich gefunden: der Parameter "ver" wird ignoriert. "help ver" funktioniert richtig. Warum wird bei "ver" einfach nichts angezeigt?


Gruß Willie.

HolgerX 7. Mär 2019 04:18

AW: CMD mit Output
 
Hmm..

Das hat nichts mit den Source von Michael zu tun!

Zitat unbekannter Herkunft:

(*
Um Kommandozeilenbefehle ausführen zu können, die keine eigenständigen
Anwendungen sind (wie der DOS-Befehl “dir”), muss der
Name des Kommandozeileninterpreters davor stehen. “cmd.exe” ist das unter
Windows NT/2000/XP/.. und “command.com” unter Windows 9x. Der Parameter /c sorgt
dafür, dass der Kommandozeilenbefehl ausgeführt und die Kommandozeile
anschließend wieder geschlossen wird.
*)

Somit verwende 'cmd.exe /A /C ver' und dessen Ausgabe wird in deinem Memo erscheinen.

Willie1 7. Mär 2019 18:39

AW: CMD mit Output
 
... ich finde Michaels Quelltext gut.

Obwohl er mir nicht weiterhilft. Das mit /c wusste ich, aber egal, ob mit /a oder /c oder ohne, es passiert nichts. Seit irgeneinem Windows-Update funktioniert die Console nicht mehr, wie gewohnt. Das hatte ich vor über einem Jahr beim Einbau von Exiftool (von Phil Harvey) in ein eigenes Programm erkennen müssen.
Könnte es sein, dass Microsoft cmd durch Powershell ersetzt. Zur Zeit gibt es ja beides.
Gruß Willie.

Rudy Velthuis 8. Mär 2019 11:42

AW: CMD mit Output
 
Zitat:

Code:
(*
  Um Kommandozeilenbefehle ausführen zu können, die keine eigenständigen
  Anwendungen sind (wie der DOS-Befehl “dir”), muss der
  Name des Kommandozeileninterpreters davor stehen. “cmd.exe” ist das unter
  Windows NT/2000/XP/.. und “command.com” unter Windows 9x. Der Parameter /c sorgt
  dafür, dass der Kommandozeilenbefehl ausgeführt und die Kommandozeile
  anschließend wieder geschlossen wird.
*)

Man sollte einfach den Inhalt der Environment-Variable COMSPEC benutzen. In meinem Fall ist das

Code:
ComSpec=C:\Windows\system32\cmd.exe
Und nein, Powershell ersetzt cmd.exe nicht. Beide sollten sich nicht in die Quere kommen.

HolgerX 8. Mär 2019 13:17

AW: CMD mit Output
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm..

Zitat:

Zitat von Willie1 (Beitrag 1427272)
... ich finde Michaels Quelltext gut.

Obwohl er mir nicht weiterhilft. Das mit /c wusste ich, aber egal, ob mit /a oder /c oder ohne, es passiert nichts. Seit irgeneinem Windows-Update funktioniert die Console nicht mehr, wie gewohnt. Das hatte ich vor über einem Jahr beim Einbau von Exiftool (von Phil Harvey) in ein eigenes Programm erkennen müssen.
Könnte es sein, dass Microsoft cmd durch Powershell ersetzt. Zur Zeit gibt es ja beides.
Gruß Willie.


Anbei ein kleines Testtool, probiere es bei dir aus.
(Erstellt mit D6)
Es erstellt im gleichen Verzeichnis eine kleine Textdatei (CMDs.txt) welche genutzt wird, um sich die DOS-Befehle zu merken ;).

Wenn dieses bei Dir läuft, kann ich den Src noch hier einstellen..

Edit:
Wobei, es benutzt die Funktion von hier:
https://www.delphipraxis.net/164364-...-einlesen.html

Willie1 12. Mär 2019 17:14

AW: CMD mit Output
 
Hallo Holger,
kannst du mir den Quelltext schicken. Ich führe nicht gerne unbekannte Exe-Dateien aus. Danke!
Pf enthält den Pfad zum temporären Ordner. (user\[Name]\apdata\Local\temp) wg. der Schreibrechte.
Delphi-Quellcode:
ShellExecute(0,'open',PWideChar('cmd.exe'),PWideChar('/c ver >'+Pf+'ver.txt'),PWideChar(ExtractFilePath(ParamStr(0))),SW_HIDE);
Auf einem Rechner läuft das, auf einem anderen nicht. Beide habe exakt dasselbe Windows mit dem gleichen Temp-Ordner.

Willie.

Delphi.Narium 12. Mär 2019 17:46

AW: CMD mit Output
 
Was sagt denn der Rückgabewert von ShellExecute aus?

Derweil: Momentan ist absolut unklar, ob ShellExecute scheitert oder Ver oder "nur" die Ausgabe nicht "abgeholt" werden kann.

Geht es darum, die Windowsversion zu erfahren?

Warum dann nicht mit Bordmitteln von Delphi?
z. B. hier (mit mehreren Alternativvorschlägen): https://stackoverflow.com/questions/...indows-version

Dalai 12. Mär 2019 18:19

AW: CMD mit Output
 
Ich würde ja einfach cmd.exe /k mit SW_SHOW Flag ausführen, um zu sehen, woran es genau scheitert.

Grüße
Dalai

Willie1 14. Mär 2019 16:32

AW: CMD mit Output
 
Hallo Leute,
ich will in meiner About-Box die installierte Windows-Version anzeigen. Ich habe es so gemacht:
Delphi-Quellcode:
function WinVersionAPI_asString: string;
var
  osInfo: tosVersionInfo;
begin
  Result := 'unknown';
  osInfo.dwOSVersionInfoSize:= Sizeof( osInfo );
  if DWORD(GetVersionEx( osInfo )) <> 0 then
    with osInfo do begin
      case dwPlatformId of
        VER_PLATFORM_WIN32_WINDOWS :
          Result:='Kein NT-OS';
        VER_PLATFORM_WIN32_NT :
          Result:=Format('%d.%d Built %d %s',[dwMajorVersion,dwMinorVersion,dwBuildNumber,string(szCSDVersion)]);
      end
    end
  //if
end; {WinVersionAPI_asString}
Ich habe hier im Forum gelernt, dass hier nicht immer die richtige Version angezeigt wird. (Manifest). Dann habe ich es mit cmd /c ver >...ver.dat gemacht, das hat ca. 1 Jahr funktioniert jetzt wird nichts mehr angezeigt. Siehe mein Beispiel.
Das war der Sinn meine Anfrage!

Ich will keinen Programm-Code, abhängig von der Windows-Version schreiben, NUR die installierte Windows-Version ermitteln und anzeigen.
Willie.

Delphi.Narium 14. Mär 2019 17:01

AW: CMD mit Output
 
Und wie wäre es damit?

https://www.arclab.com/en/kb/cppmfc/...-registry.html --> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

https://www.windows-commandline.com/...-from-command/

http://delphidabbler.com/articles?article=23&part=2

In der SysUtils müsste es eigentlich bereits entsprechend befüllte globale Variabeln geben, die man einfach in seine Ausgabe einbauen kann, ohne irgendwas selbst ermitteln zu müssen.

Neben Ver zur Versionsausgabe gibt es auch noch Systeminfo (auf der Kommandozeile).


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Seite 1 von 5  1 23     Letzte »    

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