AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Shellexecute Ergebnis im Memo Objekt ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Shellexecute Ergebnis im Memo Objekt ausgeben

Ein Thema von JimmyB · begonnen am 21. Mär 2022 · letzter Beitrag vom 16. Apr 2022
Antwort Antwort
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#1

Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 11:53
Hallo,
ich bin seit ein paar Wochen neu mit Delphi unterwegs, dachte eigentlich dass was ich machen möchte ist einfach, bekomme es aber nicht auf die Reihe.

Ich möchte mit Shellexecute ein externes Kommandozeilen Programm ausführen.
Das Ergebnis soll in einem Memo Objekt ausgegeben werden.

Als einfaches Beispiel:

Filename := 'dir'; //"dir" dient hier nur als Beispielprogramm
ShellExecute(handle,'open',PChar(filename), '','',SW_SHOW);

Was müsste ich machen um die Ausgabe von "dir" in einem Memo Objekt darzustellen?

Viele Grüße
JimmyB
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 12:04
Hallo und Herzlich Willkommen

Das ist wirklich viel schwieriger als es klingt.
Wir müssen erst einmal klären was du genau willst. Mit "Ergebnis" meinst du wahrscheinlich nicht den "Rückgabecodes" eines Prozesses, sondern das, was das Programm in die Windows-Konsole schreibt, würde man es doppelklicken oder per Konsole aufrufen. Richtig?

Wenn ja, dann ist ShellExecute(..) bereits das falsche Werkzeug für die Mission. Es ist praktisch dazu gedacht, ein "Benutzer vor dem PC doppelklickt Element XY" zu simulieren. Es bietet keine Möglichkeiten, die "Standardausgabe stdOut" des Programms (welches du starten willst) so "abzufangen", dass du es z.B. in einer Memo anzeigen könntest.

Die richtigen Tools hierfür wären in der Regel das etwas unhandliche CreateProcess(..) und ein vorheriges Erstellen einer "Pipe", um die Standard-Ausgabe deines Konsolenprozesses "aufzufangen".

Im Internet gibt es viele fertige Lösungen, wenn du z.B. "delphi capture console output" in die Suchmaschine deines Vertrauens eingibst. Wenn man den Anspruch hat das wirklich zu verstehen ist schon einiges an Arbeit nötig, vor allem wenn man sich mit Dingen wie Pipes oder stdIn/stdOut noch nicht beschäftigt hat.
  Mit Zitat antworten Zitat
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#3

AW: Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 13:09
Hallo,

lieben Dank mit den richtigen Weg zu zeigen. Du hast es richtig wiedergeben, dass ich Rückgabecodes in ein Memo Objekt ausgeben möchte.
Ich mache mich auf die Suche nach Beispielen.

Viele Dank
JimmyB
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#4

AW: Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 13:22
Ich habe vor Äonen das hier benutzt, ob das heute noch geht weiß ich nicht (keine neue Delphi Version).

https://www.delphipraxis.net/80089-%...riable-ip.html
  Mit Zitat antworten Zitat
Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 14:18
Hier findest du die Routine 'GetConsoleOutput' mit einer kleinen, aber wichtigen Ergänzung: Vor dem 'CreateProcess' muss die muss die Zeile 'UniqueString(Command);' eingefügt werden. Damit läuft sie bei mir unter Delphi 10.4 / Windows 10

Gruß LP
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Shellexecute Ergebnis im Memo Objekt ausgeben

  Alt 21. Mär 2022, 23:03
Hallo,
eine Suche nach
ShellExecuteEx und Pipes sollten Dir helfen .
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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