vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Pipe beschicken 
Autor: BasTler
Datum: 29.04.05 14:51

‘ Source in der Form mit einem Command-Button
Option Explicit
 
Private Sub Command1_Click()
  Dim I As Long
  Dim ret As Long
  Dim hReadPipe1 As Long   ' STDOUT
  Dim hWritePipe1 As Long  ' STDOUT
  Dim hReadPipe2 As Long   ' STDERR
  Dim hWritePipe2 As Long  ' STDERR
  Dim hReadPipe3 As Long   ' STDIN
  Dim hWritePipe3 As Long  ' STDIN
  Dim bytewritten As Long
  Dim cmdline As String
  Dim StuffToWrite As String
  Dim start As STARTUPINFO
  Dim proc As PROCESS_INFORMATION
  Dim sa As SECURITY_ATTRIBUTES
 
  sa.nLength = Len(sa)
  sa.bInheritHandle = True
  sa.lpSecurityDescriptor = 0&
 
  ' A pipe of redirection of STDOUT
  ret = CreatePipe(hReadPipe1, hWritePipe1, sa, 0&)
  If ret = 0 Then MsgBox "Konnte Pipe STDOUT nicht öffnen: " & Err.LastDllError
  ' A pipe of redirection of STDERR
  ret = CreatePipe(hReadPipe2, hWritePipe2, sa, 0&)
  If ret = 0 Then MsgBox "Konnte Pipe STDERR nicht öffnen: " & Err.LastDllError
  ' A pipe of redirection of STDIN
  ret = CreatePipe(hReadPipe3, hWritePipe3, sa, 0&)
  If ret = 0 Then MsgBox "Konnte Pipe STDIN nicht öffnen: " & Err.LastDllError
 
  start.cb = Len(start)
  start.dwFlags = STARTF_USESTDHANDLES Or STARTF_USESHOWWINDOW
  start.hStdOutput = hWritePipe1
  start.hStdError = hWritePipe2
  start.hStdInput = hReadPipe3
  start.wShowWindow = SW_NORMAL
 
  ' Programmaufruf
  cmdline$ = "command.com"
  ret = CreateProcess(0&, cmdline$, 0&, 0&, True, NORMAL_PRIORITY_CLASS, 0&, _
    0&, start, proc)
  If ret = 0 Then
    MsgBox "Anwendung kann nicht gestartet werden: " & Err.LastDllError, _
      vbCritical
  Else
    MsgBox "Fremdanwendung gestartet, Handle = " & ret
  End If
 
  ' Send it.
  StuffToWrite = "start notepad\n"
  ret = WriteFile(hWritePipe3, StuffToWrite, Len(StuffToWrite), bytewritten, _
    CLng(0))
  If ret = 0 Then
    MsgBox "Anwendung wurde nicht beschrieben: " & Err.LastDllError
  Else
    MsgBox "Anzahl übergebene Zeichen: " & bytewritten
  End If
 
  StuffToWrite = "start exit\n"
  ret = WriteFile(hWritePipe3, StuffToWrite, Len(StuffToWrite), bytewritten, _
    CLng(0))
  If ret = 0 Then
    MsgBox "Anwendung wurde nicht beschrieben: " & Err.LastDllError
  Else
    MsgBox "Anzahl übergebene Zeichen: " & bytewritten
  End If
 
  Do While WaitForSingleObject(proc.hProcess, 10) = WAIT_TIMEOUT
    DoEvents
  Loop
 
  MsgBox "Fremdanwendung, mit dem Handle : " & proc.hProcess & " beendet !", , _
    "Hinweis"
 
  ' Ungebrauchte Pipe's schließen
  CloseHandle hWritePipe1
  CloseHandle hWritePipe2
  CloseHandle hReadPipe3
 
  CloseHandle hReadPipe1
  CloseHandle hReadPipe2
  CloseHandle hWritePipe3
 
End Sub
Rückgabewert (bytewritten) ist gefüllt, aber es erfolgt keine Ausgabe. (Start Notepad)
Wer kann helfen? Was ist falsch und verhindert, das es läuft, wie unter C++? Kann man die Übergabe irgendwie sichtbar machen?

Gruß und Dank
BasTler
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Pipe beschicken2.495BasTler08.04.05 13:54
Re: Pipe beschicken1.040BasTler11.04.05 13:19
Re: Pipe beschicken903BugMeNot24.04.05 13:57
Re: Pipe beschicken914BugMeNot24.04.05 15:54
Re: Pipe beschicken917brave@heart25.04.05 01:15
Re: Pipe beschicken900BasTler25.04.05 15:16
Re: Pipe beschicken974BasTler25.04.05 08:57
Re: Pipe beschicken927BugMeNot25.04.05 09:17
Re: Pipe beschicken1.081Mr. Fox25.04.05 17:42
Re: Pipe beschicken851BasTler26.04.05 08:54
Re: Pipe beschicken828Mr. Fox26.04.05 09:05
Re: Pipe beschicken894BasTler26.04.05 14:36
Re: Pipe beschicken895BasTler26.04.05 14:37
Re: Pipe beschicken993Mr. Fox26.04.05 15:11
Re: Pipe beschicken798BasTler26.04.05 15:48
Re: Pipe beschicken819Mr. Fox26.04.05 18:20
Re: Pipe beschicken894BasTler27.04.05 10:32
Re: Pipe beschicken845Mr. Fox27.04.05 21:12
Re: Pipe beschicken803BasTler28.04.05 08:50
Re: Pipe beschicken863BasTler28.04.05 15:15
Re: Pipe beschicken796Mr. Fox28.04.05 17:44
Re: Pipe beschicken801BasTler29.04.05 14:48
Re: Pipe beschicken1.349BasTler29.04.05 14:51
Lösung1.058BasTler24.05.05 16:43
Re: Lösung850Mr. Fox26.05.05 10:13
Re: Lösung851BasTler27.05.05 12:47
Re: Pipe beschicken830Blacky08.05.05 23:49
Re: Pipe beschicken799BasTler09.05.05 14:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel