Seite 2 von 2

Verfasst: 21.09.2005 22:18
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

Verfasst: 21.09.2005 23:11
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....

Verfasst: 20.11.2005 13:20
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.

Verfasst: 22.11.2005 00:36
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...

Verfasst: 22.11.2005 09:53
von ts-soft
>> Damit hat man es dann ein wenig sauberer...
und es klappt auch mit dem Win9x Nachbarn :mrgreen:

Verfasst: 22.11.2005 14:54
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?

Verfasst: 22.11.2005 15:05
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:

Verfasst: 24.11.2005 08:42
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