Seite 2 von 2
Verfasst: 01.04.2007 22:21
von Bisonte
Icke hat geschrieben:Oder auf diese Weise direkt in ein String ohne den Umweg Datei:
Code: Alles auswählen
Abfrage = RunProgram("ping", "192.168.178.1", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
If Abfrage
While ProgramRunning(Abfrage)
Output$ + ReadProgramString(Abfrage) + Chr(13)
Wend
EndIf
MessageRequester("Output", Output$)
Jo schön und gut ... und wie läuft das mit PB3.9x ?
da gibts leider nichts dergleichen....
Ich versuche mit RunProgram den Ping - Befehl zu starten
also RunProgram("Ping.exe "+ip$,1)
nun denk ich mir um das ergebnis auszuwerten lenk ich die ausgabe einfach in eine Textdatei um ABER irgendwie schreibt der keine datei.
Wenn ich den befehl per Eingabeaufforderung eintippe
Ping 192.168.0.1 >demo.txt
erstellt er ein Textfile
aber per runprogram nicht.
Wieso,warum,weshalb.... ich bin schon mit den zähnen im schreibtisch
(oder es erklärt mir jemand wie ich einen ICMP - Ping an einen Server sende und das ergebnis auswerten kann .... geht um das etwas angegraute Freelancer und bei einem ICMP Ping rückt er als Antwort auch die Anzahl der Spieler die auf dem server sind und die maximalen spieler...)
Verfasst: 01.04.2007 22:31
von ts-soft
>> Jo schön und gut ... und wie läuft das mit PB3.9x ?
Garnicht, bzw. per API selber machen, aber warum datest Du nicht ab?
Verfasst: 01.04.2007 22:36
von Bisonte
ts-soft hat geschrieben:>> Jo schön und gut ... und wie läuft das mit PB3.9x ?
Garnicht, bzw. per API selber machen, aber warum datest Du nicht ab?
Updaten... dazu muss ich doch erstmal Kohle überhaben
Nunja API ? ähh..
Tja also ich bin da eher ein Anfänger, ich erinnere mich nur noch damals an den Amiga und C (ich kann C nicht, aber da war was mit stdout

)
und nun frag ich mich mie das vonstatten gehen soll ...
Also das Dos-Programm nennt sich FLPing und gibt gleich ne ganze Reihe von Textzeilen auf die Console.... je nachdem wieviele pings er machen soll....
Und maschinensprachebewandert bin ich auch nicht wirklich von wegen API ? Was ist das eigentlich ....
Verfasst: 01.04.2007 22:45
von ts-soft
Bisonte hat geschrieben:Updaten... dazu muss ich doch erstmal Kohle überhaben
Diese Aussage mußt Du mir erklären, als rechtmässiger Besitzer der Version
3.9x stehen Dir lebenslange kostenlose Updates zur Verfügung.
Also wie Du schon sagtest, spare, besorge die rechtmässige Version und
melde Dich wieder

Verfasst: 01.04.2007 22:55
von Bisonte
ts-soft hat geschrieben:Bisonte hat geschrieben:Updaten... dazu muss ich doch erstmal Kohle überhaben
Diese Aussage mußt Du mir erklären, als rechtmässiger Besitzer der Version
3.9x stehen Dir lebenslange kostenlose Updates zur Verfügung.
Also wie Du schon sagtest, spare, besorge die rechtmässige Version und
melde Dich wieder

Ups böser Fehler : Topos Version ist nicht 3.9x ... Verwirr mich doch nicht
Ist natürlich 3.30 ... da ist leider kein updaterecht drauf. und wie ich gesehen habe kostet PB 79 € oder nicht...
Die Cd lag in der Pyramide für 10 DM Damals noch... da wo auch die Amigaversion 2 mit drauf ist.
Verfasst: 01.04.2007 23:09
von ts-soft
Bisonte hat geschrieben:
Ups böser Fehler : Topos Version ist nicht 3.9x ... Verwirr mich doch nicht

Naja, werde Dir mal glauben
Hier mal eine etwas ältere Version, die stammt Original von Rings, hab
aber für meine Bedürfnisse div. Änderungen durchgeführt, weiß also nicht
ob es so überhaupt verwendbar ist:
Code: Alles auswählen
Procedure.s CaptureDOSOutput(AppName.s, CommandLine.s, MemoryBuffer.l)
If AppName <> ""
CommandLine = " " + CommandLine
EndIf
proc.PROCESS_INFORMATION
start.STARTUPINFO
sa.SECURITY_ATTRIBUTES
hReadPipe.l
hWritePipe.l
lngBytesread.l
Result.l
mOutputs.s = ""
strBuff.s = Space(MemoryBuffer)
sa\nLength = SizeOf(SECURITY_ATTRIBUTES)
sa\bInheritHandle = 1
sa\lpSecurityDescriptor = 0
If CreatePipe_(@hReadPipe, @hWritePipe, @sa, 0) = #False
mOutputs = " CreatePipe failed "
EndIf
start\cb = SizeOf(STARTUPINFO)
start\dwFlags = #STARTF_USESHOWWINDOW | #STARTF_USESTDHANDLES
start\hStdOutput = hWritePipe
start\hStdError = hWritePipe
If AppName = ""
Result = CreateProcess_(0, @CommandLine, sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc)
Else
Result = CreateProcess_(@AppName, @CommandLine, sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc)
EndIf
If Result = #False
mOutputs = mOutputs + " File Or command not fount "
Else
CloseHandle_(hWritePipe)
While Result <> 0
Result = ReadFile_(hReadPipe, strBuff, MemoryBuffer, @lngBytesread, 0)
If lngBytesread > 0
mOutputs = mOutputs + Left(strBuff, lngBytesread)
EndIf
Wend
CloseHandle_(proc\hProcess)
CloseHandle_(proc\hThread)
CloseHandle_(hReadPipe)
EndIf
ProcedureReturn mOutputs
EndProcedure
Der Code wurde in PB3.81 geschrieben.
Verfasst: 02.04.2007 10:51
von Bisonte
Ich bedanke mich...
Nachdem ich rausgefunden habe das MemoryBuffer die Anzahl der Zeichen ist, die die Antwort haben könnte, funtioniert die Procedure tadellos !
zu Topos:
Fast alle Codeschnipsel funktionieren mit der Topos version sofern sie nicht irgendwas extremes an sich haben.
Ich bastel aber eigentlich nur an mini progrämmchen wo ich grafikschnickschnack und so nicht brauche (OpenConsole

)
und wenn man die openwindow befehle aus allem rauslässt läuft eigentlich fast alles ....
(Ich hab mir die CD Damals wegen dem Amiga geholt .... Der einzig wahre Computer

)