[ALL BB] cmd.exe bzw. Eingabeaufforderung Ausgabe in BB

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Niclas

Betreff: [ALL BB] cmd.exe bzw. Eingabeaufforderung Ausgabe in BB

BeitragSa, Jul 23, 2005 2:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hab da ma was gebastelt womit man sämtliche Befehle die man normalerweise in der Eingabeaufforderung eingibt direkt in BB verwenden kann! Wink so z.B. net view, um in BB das netzwerk anzuzeigen

command$: der Befehl den man ausführen will
delaytime: eine delayzeit für die einzelnen Zeilenabfragen, so z.B. wenn man pingt ("ping www.google.de") z.B. dann brauchen die einzelnen Zeilen ja länger als 10ms (Standardwert) und es wird nur die 1. zurückgeliefert, wenn man z.B. nur 1 pingzeile braucht etc. , mir ist dafür auch bis jetzt keine andere Lösung eingefallen Wink bin mir sicher das hier Andere ne bessere Lösung haben *g*

Auch werden die erstellten Dateien am Ende nicht gelöscht, ich weis is unprofessionell *g* aber dann gibt das unlogsiche Fehler, falls jemand dafür auch noch ne lösung wüsste wäre gut Wink

hier der code:
BlitzBasic: [AUSKLAPPEN]
siehe unten


//EDIT:
Hab hier noch ein Beispiel Wink Mal nen Anwendungsbeispeil zur getcmd Funktion, Aus nem hostnamen ne ip machen:

PS: gibs vielleicht ne schnellere möglichkeit aus nem hostnamen die ip zu bekommen ? hab schon gegoogelt und im bbforum gesucht aba nix gefunden, diese lösung dauert immerhin ~1 sek. :-/

BlitzBasic: [AUSKLAPPEN]
Function host_ip$(hostname$)
Return substr$(Substr$(getcmd$(\"ping \"+hostname$,10,1),2,\"[\"),1,\"]\")
End Function


mfg Niclas
  • Zuletzt bearbeitet von Niclas am So, Jul 24, 2005 0:05, insgesamt einmal bearbeitet

Hip Teen

BeitragSa, Jul 23, 2005 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab schnell mal was kleines gebastelt, mit ner schönen GUI und so, aber das Programm geht, davon abgesehen dass es halt ne GUI hat, wegen dem Befehl CreateProcess leider nur unter B+.

BlitzBasic: [AUSKLAPPEN]
window = CreateWindow(\"CMD Klon\", 363, 355, 666, 549, 0, 1)
Global ausgabe_textarea = CreateTextArea(48, 144, 561, 321, window)
befehl_textfield = CreateTextField(48, 72, 169, 21, window)
button = CreateButton(\"Ausführen\", 240,70,100,30, window)
CreateLabel(\"Befehl eingeben:\", 48, 48, 80, 13, window)
CreateLabel(\"Ausgabe:\", 48, 128, 45, 13, window)

Repeat
Select WaitEvent()
Case $401
If EventSource() = button Then
befehl$ = TextFieldText(befehl_textfield)
ausfuehren(befehl$)
End If
Case $803
End
End Select
Until KeyDown(1)


Function ausfuehren(befehl$)
stream = CreateProcess(befehl$)
If stream Then
Repeat
AddTextAreaText ausgabe_textarea, ReadLine (stream) + Chr(10)
Until Eof(stream)
End If
stream = 0
End Function
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"
 

Niclas

BeitragSa, Jul 23, 2005 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
aso, och maaaaaaaaaaaaaaaaaaaaaaaaaan Ey wie SCHEISSE !!! ich bastel da MEGA lange rum , und wusst net das es CreateProcess gibt -.- naja egal...

//EDIT:
So nu hier ne überarbeitete Version, die funzt in 100ms Wink das alte , falls jemand doch mit bb3d arbeiten möchte wurde nach getcmd_old umbenannt...

BlitzBasic: [AUSKLAPPEN]
Function getcmd_old$(command$,lines=-1,delaytime=10)
Local ret
Local r$
Local tmpline
Local out$=\"\"
Local tmpdir$ = SystemProperty$(\"TEMPDIR\")
Local f = WriteFile(tmpdir$+\"tmp.txt\")

WriteLine f,\"\"
CloseFile f

f = WriteFile(tmpdir$+\"tmp.cmd\")
WriteLine f,\"@ECHO OFF\"
WriteLine f,command$+\" > \"+tmpdir$+\"tmp.txt\"
CloseFile f

f = WriteFile(tmpdir$+\"tmp.vbs\")
WriteLine f, \"Set shell = WScript.CreateObject( \"+Chr$(34)+\"WScript.Shell\"+Chr$(34)+\" )\"
WriteLine f, \"Const batch = \"+Chr$(34)+tmpdir$+\"tmp.cmd\"+Chr$(34)
WriteLine f, \"shell.run batch, 0, tru\"
CloseFile f

While FileType(tmpdir$+\"tmp.vbs\")=0:Wend

ExecFile(tmpdir$+\"tmp.vbs -s\")

While out$=\"\"
f = ReadFile(tmpdir$+\"tmp.txt\")
If f <> 0 Then
While Not Eof(f)
r$ = ReadLine$(f)
If r$ <> \"\" Then
out$ = out$+r$+Chr$(13)
Delay delaytime
If lines > -1 Then tmpline = tmpline + 1
If lines => tmpline Then Exit
End If
Wend
CloseFile f
End If
Wend

;Delay 100


;DeleteFile tmpdir$+\"tmp.txt\"
;DeleteFile tmpdir$+\"tmp.cmd\"
;DeleteFile tmpdir$+\"tmp.vbs\"

Return out$
End Function

Function getcmd$(command$,lines=-1)
f = CreateProcess(command$)
While Not Eof(f)
r$ = ReadLine$(f)
If r$ <> \"\" Then
out$ = out$+r$+Chr$(13)
Delay delaytime
If lines > -1 Then tmpline = tmpline + 1
If lines => tmpline Then Exit
End If
Wend
Return out$
End Function

Function host_ip$(hostname$)
Return substr$(Substr$(getcmd$(\"ping \"+hostname$,1),2,\"[\"),1,\"]\")
End Function

Function SubStr$(s$,p,t$=\",\")
Local i,n=1
If p<1 RuntimeError(\"parameter must be greater than 0\")
For i=1 To p-1
n=Instr(s$,t$,n+1)
Next
i=Instr(s$,t$,n+1)-n
If Not(n) Then Return \"\"
Return Mid$(s$,n+(n>1),i-(n>1))
End Function

start = MilliSecs()
Print host_ip$(\"hoyer2\")
Print MilliSecs()-start

Delay 3000


mfg Niclas

Last Anquav Hero

BeitragSo, Sep 18, 2005 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

currentdirectory$=CurrentDir()

Print \"Anquav Command Console V1.0\"
Print \"Copyright 2005\"

Repeat

command$=Input(CurrentDir()+\">\")
stream=CreateProcess(command)
If stream Then
Repeat
Print ReadLine(stream)
Until Eof(stream)
EndIf

If Instr(Lower(command$),\"cd\") Then command$=Replace$(command$,\"cd \",\"\"):ChangeDir(command$)
If Instr(Lower(command$),\"dir \") Then dir(Replace(command,\"dir \",\"\"))
Forever

Function dir(dirr$)
Verz=ReadDir(dirr)
Repeat
Datei$=NextFile$(Verz)
If Datei$=\"\" Then Return
If FileType(\"C:\\"+Datei$) = 2 Then
Print \"Ordner:\" + Datei$
Else
Print \"Datei:\" + Datei$
EndIf
Forever

CloseDir Verz
Print \"\"
Print \"-Ende-\"
Print \"\"
End Function


mal windows mäßig
braucht b+

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group