Shell Like!

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

so wie ich das sehe, liegt's an dem fehlenden Leerzeichen hinter
[c]"send"[/c]. Ausserdem bezweifel ich, dass das Programm '[c]net.exe[/c]' auf
'[c]C:\[/c]' liegt. Meist liegt es im [c]System32[/c]-Ordner, kann aber auch gänzlich ohne
Pfadangabe aufgerufen werden, weil dieser Pfad oft in den
Umgebungsvariablen vorhanden ist.

so müsste es also aussehen:

Code: Alles auswählen

 [...]
  RunProgram("net","send " + a.s +b.s,"",2)
 [...]
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Wenn nix hilft hilft das vielleicht:

Code: Alles auswählen

; Beispiel Dosbefehle ausführen
; Pamkkkkk 21.September 2005
; PB 3.93 Windows

Procedure.s GetTempPath()
  ; gibt den Pfad zum Temp Verzeichnis wieder.(mit abschliessendem \ (backslash))
  TmpPath.s = Space(1024)
  GetTempPath_(Len(TmpPath),TmpPath)
  If Right(TmpPath,1) <> "\"
    TmpPath = TmpPath + "\"
  EndIf
  ProcedureReturn TmpPath
EndProcedure

Procedure Run_Dos(DosCommand.s)
  Erfolg = 1
  TMP.s =  GetTempPath()
hFile = CreateFile(#PB_Any , TMP + "d_o_s_PB.cmd") ;Kann auch ne ganze Batchdatei sein
  If hFile = 0
    ProcedureReturn 0 ; Fehler Abbruch
  EndIf
  WriteStringN(DosCommand)
  CloseFile(hFile)
  If RunProgram("cmd" , " /C " +  Chr(34)+ TMP + "d_o_s_PB.cmd" +  Chr(34),"",1) = 0
    Erfolg = 0
  EndIf
  If DeleteFile(TMP + "d_o_s_PB.cmd") = 0
    Erfolg = -1
  EndIf
  ProcedureReturn Erfolg 
EndProcedure

; Beispiel ein Befehl aufrufen
Run_Dos("pause")

; Beispiel mehrere Befehle aufrufen
Run_Dos("Dir C:\" + Chr(10) + "Echo " + Chr(34) + "Hallo Nachricht" + Chr(34) +  Chr(10) + "pause")
Gute nacht....
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

Mich hat heute die gleiche frage beschäftigt.
Ich habe bisher immer gern den MS-DOS-Befehl DIR benutz, seine Ausgabe in eine Datei umgeleitet und so eine Auflistung der vorhanden Verzeichnisse und Dateien voliegen gehabt. Ich brachte dann nur noch die Datei auszuwerte und hatte alle erforderlichen Daten.

Musste eben aber feststellen , dass DIR ein interner Befehl ist und somit nicht als externen programm ausgefürhrt werden kann.

Kennt jemand einen Weg Verzeichnisinformationen unter Windows komfortabler zur Verfügung zu bekommen.

Mein bisheriger ansatz, der auch funtioniert, ist, dass ich bit QBasic eine EXE erzeugt habe, die dann wieder den DIR-Befehl benutzt. Ich denke aber, dass das in der heutigen zeit nicht der richtige Weg sein kann.
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Eine Möglichkeit:

Code: Alles auswählen

RunProgram("cmd.exe","/C dir /b>c:\test.txt","c:\")
Oder besser noch die "cmd.exe" ersetzen mit diesem Code von ts-soft:

Code: Alles auswählen

Procedure.s GetEnv(szVariable.s)
  Protected Length.l, Buffer.s
  Length = GetEnvironmentVariable_(@szVariable, @Buffer, 0)
  If Length
    Buffer = Space(Length)
    GetEnvironmentVariable_(@szVariable, @Buffer, Length)
    ProcedureReturn Buffer
  EndIf
  ProcedureReturn ""
EndProcedure

RunProgram(GetEnv("COMSPEC"),"/C dir /b>c:\test.txt","c:\")
Damit hat man es dann ein wenig sauberer...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Damit hat man es dann ein wenig sauberer...
und es klappt auch mit dem Win9x Nachbarn :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

Super, genau sowas hab ich gesucht.

Jetzt gibts nur noch ein paar kleine Fragen:

Wer oder was ist ts-soft?
Kann man den Code ohne Probleme in eigene Programme einbauen? Es geht mir nur um Lizensbestimmungen.

Gibt es ein möglichkeit, dass des programm im Hintergrung abläuft, ohne dass der Monitor schwarz wird? wenn man dir/s bei ner 40 GB Platte macht, kann das schon mal dauern.

Wenn es eine cmd.exe gibt, gibt es dann auch eine command.exe?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

scoty hat geschrieben: Wer oder was ist ts-soft?
<-- I don't know
scoty hat geschrieben: Kann man den Code ohne Probleme in eigene Programme einbauen? Es geht mir nur um Lizensbestimmungen.
Ich glaube schon
scoty hat geschrieben: Wenn es eine cmd.exe gibt, gibt es dann auch eine command.exe?
Die heisst wohl command.com! Aber die Procedure ist ja dafür da, das Du Dir darüber keine Gedanken mehr machen brauchst :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

PAMKKKKK hat geschrieben:Net send funktioniert unter Windows Xp SP2 nicht mehr....
Einschalten siehe hier:
http://support.microsoft.com/?scid=kb;d ... 52&sid=237

Firewalls und Router lassen den auch nicht durch....
Bei mir geht alles und ich hab auch das neuste SP intalled, du musst nur den NarichtenDienst wieder anschalten, oder wie immer der auch heißt :D
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Antworten