[CreateProcess@B3D] Rückgabe aus CMD auslesen

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

Chester

Betreff: [CreateProcess@B3D] Rückgabe aus CMD auslesen

BeitragDi, Mai 12, 2009 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

für eines meiner Projekte war es erfordlich die Konsolenrückgabe auszulesen. Da dies in Blitz3D so nicht geht, hab ich mir hierzu eine kleine DLL geschrieben, vielleicht braucht es ja irgendwann mal jemand Smile

Das ganze läuft über sog. Pipes. Zuerst muss man mit PipeOpen das Programm oder den Konsolenbefehl ausführen und dann mit ReadPipe und PipeEof, ähnlich wie bei einer Textdatei, auslesen und zuletzt mit PopeClose wieder schließen.

Der Code:
Code: [AUSKLAPPEN]
Pipe = PipeOpen("dir")
Repeat
   Print ReadPipe(Pipe)      
Until PipeEof()

PipeClose(Pipe)
Waitkey()

listet die Rückgabe des DIR Kommandos, also alle enthaltenen Dateien und Ordner im momentanen Verzeichnis, auf.

In der Zipdatei sind noch zwei weitere Beispiele enthalten:
Download!

Mfg
Chester
  • Zuletzt bearbeitet von Chester am Mi, Apr 07, 2010 15:45, insgesamt einmal bearbeitet

ozzi789

BeitragDi, Mai 12, 2009 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann also aus jeder Konsolen anwendung den Output mitschneiden?
Echt parktisch schaus mir mal in Ruhe an


mal so neben bei
ist das nicht das gleiche wie

Code: [AUSKLAPPEN]
stream = CreateProcess(".......")

If stream Then
   While Not Eof(stream)
      Print ReadLine$(stream)
   Wend
EndIf


mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Der Eisvogel

BeitragDi, Mai 12, 2009 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Dürfte das selbe sein. http://www.activevb.de/tipps/v...p0272.html
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Starwar

BeitragDi, Mai 12, 2009 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
http://east-power-soft.de/inde...codes_pipe
MFG

Chester

BeitragMi, Mai 13, 2009 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
@ozzi:
Das Problem allerdings ist, dass es CreateProcess nur in BlitzPlus gibt.

@Starwar:
Das ist dann sozusagen die "Rohvariante". Also wenn man mehr als nur den Output einzulesen vorhat, wird man damit natürlich eher ans Ziel kommen.
Meine Variante ist eher als CreateProcess Äquivalent für B3D gedacht und ist auch nur unidirektional.
Aber irgendwie komisch, ich habe ewig nach Pipes in Verbindung mit BlitzBasic gesucht, und bin nicht auf das gestoßen. Deshalb danke Smile

Trust

BeitragDo, Apr 11, 2013 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier um die Dll in BMax einzubinden:
BlitzMax: [AUSKLAPPEN]
' Benötigte Libs
' Framework brl.basic
' Import pub.win32

' Dll und Funktionen Laden
Local DllHandle:Int = LoadLibraryA("BB_Pipe.dll")

Global PipeOpen:Int(lpString:Byte Ptr)"Win32" = GetProcAddress(DllHandle,"_PipeOpen@4")
Global PipeClose(pipe:Int)"Win32" = GetProcAddress(DllHandle,"_PipeClose@4")
Global ReadPipe:String(pipe:Int)"Win32" = GetProcAddress(DllHandle,"_ReadPipe@4")
Global PipeEof:Int()"Win32" = GetProcAddress(DllHandle,"_PipeEof@0")


Hier nochmal für alle Fälle der Download
CMD_Auslesen.rar
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

BtbN

BeitragFr, Apr 12, 2013 3:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Und warum sollte man das tun? BMax kann das auch so.

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group