Entwickler-Ecke

Windows API - Shellexecute - befehle verknüpfen?


pHaRyNx - Sa 13.05.06 18:34
Titel: Shellexecute - befehle verknüpfen?
hallo!
Ich habe nochmals ein Problem mit dem ShellExecute-Befehl:
ich möchte ein programm per shellexecute starten und auch gleich weitere eingaben tätigen. hier der auszug aus einem batchscript:

Zitat:

telnet 127.0.0.1 25
helo
mail from:hugo@hugo-rulez.net
....


es folgen noch weitere befehle..., aber ich weiss nicht, wie ich diese via shellexecute anwenden kann.
kann man überhaupt mit shellexecute mehrere befehle miteinander verknüpfen???
bitte helft mir.
mfg pHaRyNx


azubi_20 - Mo 15.05.06 08:54

Hallo,
nur so ne Idee : lass die Anweisungen doch in einem Batch und starte das dann. Alternativ schreibst du den Batch zur Laufzeit.


pHaRyNx - So 11.06.06 09:42

hm, leider musste ich gerade feststellen, dass das batchscript als solches nichtmals funktioniert.
die oben genannten befehle muss ich sonst immer einzeln nacheinander in die windows-cmd eingeben; anders geht es irgendwie nicht!?
gibts da vllt eine lösung mit delphi?

mfg pHaRyNx


nullplan001 - So 11.06.06 10:03

Ja nee, is klar:
Du startest telnet. Was darunter kommt, hätte eigentlich in ein Batchskript für telnet gehört, denn diese Befehle übergibst du nicht der CMD sondern telnet. Die Batch kriegt aber die CMD, und die kratzt sich dann ganz ernsthaft und besorgt am Kopf. Was du willst, geht so hier:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
copy /q nul tmp.txt && rem Alte tmp.txt überschreiben. Mit nix.
:: Jetzt schreiben wir einfach mal die Befehle auf, die telnet kriegen soll
echo helo >> tmp.txt
echo mail from:me@example.org >> tmp.txt
echo rcpt to:you@example.org >> tmp.txt
echo data >> tmp.txt
echo Subject:Just a test >> tmp.txt
echo. >> tmp.txt
echo Hi you, >> tmp.txt
echo this is just a test, so don't worry 'bout it. >> tmp.txt
echo . >> tmp.txt
:: So, dass ist jetzt cool, du schreibst die Befehlsdatei auf den stdout und legst den stdin von telnet auf den stdout von type
:: Ergebnis: Telnet kriegt die ganzen Befehle ab und sendet sie
type tmp.txt|telnet 127.0.0.1 25

Ich hab das jetzt aus dem Bauch heraus geschrieben, kann sein, dass es nicht klappt. Obwohl ich das weniger glaube.
Tschö,
nullplan
P.S.: Warum machst du das eigentlich nicht mit Sockets? Geht viel einfacher als telnet zu quälen. Einfach einen Socket auf 127.0.0.1:25 und dann geht sie ab, die Post. Sende aber am Ende der Befehle immer einen Zeilenumbruch (Zeichenfolge #13#10) mit, weil sonst die Befehle nicht abgesendet werden. Wenn du es genauer wissen willst: http://www.c-worker.ch . Ja, die Beispiele sind in C, aber das wird doch wohl zu übersetzen sein. So schwer ist es nicht.