AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

CMD.exe ver>123.txt

Ein Thema von Willie1 · begonnen am 1. Jun 2014 · letzter Beitrag vom 2. Jun 2014
Antwort Antwort
Seite 1 von 2  1 2   
Willie1

Registriert seit: 28. Mai 2008
615 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

CMD.exe ver>123.txt

  Alt 1. Jun 2014, 16:58
Hallo Delphifreunde/innen,
nachdem Windows 8.1 mit GetWindowsVersion() nicht mehr erkannt wird, hatte ich mir folgende Lösung ausgedacht:
Mit ShellExecute CMD.exe ver>123.txt
Das funktioniert in der Eingabeaufforderung aber bei ShellExecute wird die Umleitungsdatei nicht angelegt, obwohl es hier anders zu lesen ist:
http://www.microsoft.com/resources/d....mspx?mfr=true

Ich will es eigentlicht nicht erwähnen, aber durch meine Augenerkrankung bin ich schlecht in Rechersche, über Hilfe freue ich mich.

MfG
Willie
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.637 Beiträge
 
Delphi 5 Professional
 
#2

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 17:02
Wie sieht dein Aufruf von ShellExecute aus? Benutzt du
Code:
cmd /c
vor dem Befehl? Umleitungen werden ausschließlich von der ausführenden Shell interpretiert - und die Shell explorer.exe (die den ganzen GUI-Krempel macht) hat damit nichts am Hut.

MfG Dalai
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
615 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 17:08
Ok, ich werde es so machen und dann nochmal melden!
Willie
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
615 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 17:31
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  s,st: string;
  TF: TextFile;
begin
  s:=CreateTempFile(TmpPath,'~',false);
  ShellExecute(Application.Handle,PChar('cmd.exe/c',PChar('ver>'+s),nil,nil,SW_SHOW);
  AssignFile(TF,s);
  Reset(TF);
  ReadLn(TF,st);
  CloseFile(TF);
  Edit1.Text:=st;
end;
Die Datei wird nicht angelegt.
CreateTempFile(TmpPath,'~',false) habe ich selbst gebaut und findet einen zufälligen Dateinamen im Tremp-Ordner. Angelgt soll die Datei erst bei ShellExecute().
Der Rückgabewert von ShellExecute ist 2.

Willie.

Geändert von Willie1 ( 1. Jun 2014 um 18:01 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.637 Beiträge
 
Delphi 5 Professional
 
#5

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 17:45
Bitte Leerzeichen beachten!
Code:
cmd.exe /c
/c ist ein Parameter für cmd.exe. Es kann also sein, dass das /c mit in den Parameter-Parameter muss (was ein doofes Wort ). Also so:
ShellExecute(Application.Handle, PChar('cmd.exe'), PChar('/c ver>'+s), nil,nil, SW_SHOW);
Abgesehen davon solltest du auf das Ende des Befehls warten und dann erst weitermachen in deinem Delphi-Code; es gibt dafür eine Reihe von Funktionen im Netz (z.B. ShellExecuteAndWait/ShellExecAndWait).

MfG Dalai
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
615 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 18:17
Hallo Dalai,
ich habe es mit allen möglichen Kombinationen versucht, es klappt nicht. Verstehe ich dich richtig, dass es mit ShellExecute eher nicht geht? (Ich weiß von früheren Versuchen, dass ShellExecute ein elender Befehl ohne sinnvolle Rückmeldung ist)
Dann gehe ich vielleicht besser über die Registry?

Willie.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.637 Beiträge
 
Delphi 5 Professional
 
#7

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 18:27
ich habe es mit allen möglichen Kombinationen versucht, es klappt nicht.
Sagte dir das dein Debugger?

Zitat:
Verstehe ich dich richtig, dass es mit ShellExecute eher nicht geht?
Nö, da hast du mich falsch verstanden. Es ging nur darum, dass du auf das Ende der Ausführung von ShellExecute wartest, bevor du dich an die Auswertung der damit erzeugten Datei machst. Wobei man das ja eigentlich anders machen könnte und direkt die Ausgabe von "cmd.exe /c ver" mit Delphi abgreifen könnte, statt die Ausgabe in eine Datei umzuleiten, die man nachfolgend mit viel Brimborium mit Delphi einliest. Aber das kann man später ja noch ändern.

Zitat:
(Ich weiß von früheren Versuchen, dass ShellExecute ein elender Befehl ohne sinnvolle Rückmeldung ist)
Das ist ja nun Unsinn, schau dir mal die Rückgabewerte bei im MSDN an: MSDN-Library durchsuchenShellExecute.

MfG Dalai
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
615 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 19:04
Hallo Dalai,
ich habe hier im Forum ShellExecute_AndWait(<Programm>,>Parameter>) gefunden und ungeprüft benutzt, es funktioniert.
Zitat:
Das ist ja nun Unsinn, schau dir mal die Rückgabewerte bei im MSDN an:
ERROR_FILE_NOT_FOUND hat mir nicht wirklich geholfen.
Aber jetzt komme ich klar, ich danke dir!

Gruß Willie.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.637 Beiträge
 
Delphi 5 Professional
 
#9

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 19:43
ERROR_FILE_NOT_FOUND hat mir nicht wirklich geholfen.
Wieso nicht? Es gibt nunmal keine Datei namens "cmd.exe/c" (auf keinem Windows-System), also bekommt man doch eine wahre und sinnvolle Aussage.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.430 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: CMD.exe ver>123.txt

  Alt 1. Jun 2014, 20:16
Warum updatest Du nicht Dein Manifest wie hier beschrieben oder verwendest WMI?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf