AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie funktioniert DosCommand?

Ein Thema von Delphi Star · begonnen am 27. Okt 2004 · letzter Beitrag vom 25. Nov 2024
Antwort Antwort
Seite 2 von 2     12   
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Wie funktioniert DosCommand?

  Alt 12. Apr 2010, 17:50
Zitat von schöni:
Und in cmdNewLine könnte ein zweiter Prozess sein Ausgaben in eine Stringliste schreiben. Aber wie geht es danach mit der Auswertung eventueller Ausgaben weiter?

Wird cmdNewLine nach jedem CRLF neu ausgelöst oder wird die gesamte Ausgabe übergeben?
Im Ereignis onNewLine kann kannst Du den String in einen
Buffer, der von anderen Klassen nutzbar ist, schreiben und dort auswerten.
Oder direkt im Erignis auswerten.

Wie der Name des Ereignises onNewLine vermuten läßt wird es bei jeden
Carriage Return LineFeed ausgelöst.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
herik

Registriert seit: 17. Okt 2007
Ort: Spitzkunnersdorf / Sachsen
15 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Wie funktioniert DosCommand?

  Alt 25. Nov 2019, 11:28
Hallo Gemeinde,



Ich beschäftige mich aktuell auch gerade mit DosCommand. Super finde ich die Möglichkeit live die Ausgaben der Console zu erhalten.

Meine Frage ist ob DosCommand auch mit einem anderem Comandozeilenprogramm genutzt werden kann.
Speziell geht es mir hier um die Datei TNCCMD.exe von Haidenhain.

In den Beispielen die ich bisher gefunden habe wird ja immer cmd von Windows genutzt.

Mein Versuch sieht bisher so aus:

Aufruf meiner Batchdatei:
Delphi-Quellcode:
  CMD.OutputLines := Memo1.Lines;
  cmd.CommandLine := 'run.bat';
  cmd.Execute;
meine Batchdatei:
Code:
TNCCMD.exe Connect I- 192.168.2.81
pause
und noch das was im Memo1 ausgegeben wird:
https://www.delphipraxis.net/attachm...1&d=1574676990


Nun ist halt die Frage ob ich die TNCCMD.exe anders angeben muss, bzw ob es überhaupt so funktioniert.
Seltsam kommt mir auch die doppelte Ausgabe der Zeilen vor.

Ich hoffe ich habe ausreichend Infos gegeben das Ihr mir Helfen könnt.

mfg Herik
Miniaturansicht angehängter Grafiken
anzeige.png  
Erik
  Mit Zitat antworten Zitat
herik

Registriert seit: 17. Okt 2007
Ort: Spitzkunnersdorf / Sachsen
15 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Wie funktioniert DosCommand?

  Alt 4. Jan 2020, 10:20
Kann mir keiner helfen?
Erik
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#14

AW: Wie funktioniert DosCommand?

  Alt 4. Jan 2020, 10:49
Anstatt einen fast 10 Jahre alten Thread wiederzubeleben, wäre es vielleicht besser einen neuen aufzumachen. Ich persönlich neige eher dazu, solche Zombies zu ignorieren. Abgesehen davon, könnte man den Titel auch besser an dein aktuelles Problem anpassen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
herik

Registriert seit: 17. Okt 2007
Ort: Spitzkunnersdorf / Sachsen
15 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Wie funktioniert DosCommand?

  Alt 5. Jan 2020, 09:02
Ok. Danke. Werde ich machen.
Erik
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
274 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Wie funktioniert DosCommand?

  Alt 24. Nov 2024, 17:44
Der Name DOSCommand verwirrt mich. Windows 10 hat doch gar keinen DOS Kernel mehr. Wie können da DOS Befehle ausgeführt werden?

Oder gibt dieser Code an die Windows Console weiter? Und erlaubt so Zugriff auf die Windows Eingabeaufforderung bzw. die Powershell?

Der Quellcode sagt mir, dass mit DOS die Console des Betriebssystems gemeint sein muss, Windows Console oder PowerShell, da gewöhnliches DOS schon mal kein Multitasking kann. Aber DOSCommand kann das lt. Quellcode.

@Uwe Raabe:
Anstatt einen fast 10 Jahre alten Thread wiederzubeleben, wäre es vielleicht besser einen neuen aufzumachen.
------------------------------------------------------------------------------------------------------------
Der Nachteil wäre dann aber dass mehrere Threads mit demselben Thema da wären. Welcher davon enthält dann die von mir gesuchte Antwort? Ich finde deshalb einen Thread pro Thema besser.

Geändert von delphifan2004 (24. Nov 2024 um 18:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#17

AW: Wie funktioniert DosCommand?

  Alt 24. Nov 2024, 20:24
Die Komponente heißte einfach so .... viele nennen die "CMD" (jetzt "Terminal") auch immernoch DOS-Konsole.

Ja, die Komponente gibt die Befehle an die CMD.exe weiter.


Multitasking:
Nein, auch die "Konsole" kann MultiTasking ... man kann Programme im Hintergrund starten, auch wenn es selten wer nutzt.
Jede CMD.exe (plus ihren ConsoleHost.exe) für sich machen quasi einen Thread/Task .... und die Komponente kann einfach mehrere CMD.exe starten und mit ihnen reden (denk ich mal).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (24. Nov 2024 um 20:27 Uhr)
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
351 Beiträge
 
#18

AW: Wie funktioniert DosCommand?

  Alt Gestern, 12:55
Windows 10 doesn't have a DOS kernel anymore. How can DOS commands be executed?
By virtualizing or more accurately emulating.

Or does this code pass it on to the Windows Console? And thus allow access to the Windows command prompt or Powershell?
As above, see, (real) DOS kernel is something impossible and even if it is possible it will compromise the OS security rendering Windows OS unusable, in past era DOS kernel only ran in real mode or protected mode, meaning it has access to low level hardware interrupt, this can't be allowed in modern OS, all application and services should be in virtual mode context, so the solution is create an emulator to emulate most of the functionality, which is not different at all except for..

The source code tells me that DOS must mean the operating system console, Windows Console or PowerShell, since normal DOS can't multitask. But DOSCommand can, according to the source code.
To clear this confusion and extend the answer for the above question, lets answer what is the difference between GUI and console application, the answer is nothing ! except
console application had special flags in the EXE to make the OS automatically create the pipes for the emulation host app while GUI application doesn't have this. (by pipes i mean the stdinput and stdoutput..)

For fun application try to use WriteLn in GUI application

play with such code and see how closing the console will terminate the GUI app !
Delphi-Quellcode:
procedure TForm10.Button1Click(Sender: TObject);
begin
  AllocConsole;
end;

procedure TForm10.Button2Click(Sender: TObject);
begin
  Writeln('Testing console output from GUI application');
end;
To read more about consoles https://learn.microsoft.com/en-us/wi...nsole/consoles

And again to assert, there is no real DOS command in windows, only allowed emulated behavior (input/output).
Kas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:02 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