vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB & Windows API
ShellExecuteEX Bedingung einbauen 
Autor: keyn
Datum: 03.11.04 17:17

Hallo

ich habe da ein kleines Problem.
Ich starte via ShellExecuteEX "Plink.exe" (ssh client) und stelle mittels ein paar parameter eine Verbindung zu einem SSH - Server her.
Das kalppt auch alles gut.
Nun zum Problem:

In den Parametern wird die Variable "id" verwendet (Kennwort für den SSH Server)
Wenn eine falsche ID eingegeben wird kann keine Verbindung hergestellt werden und der Task "Plink.exe" wird auch gleich beendet. (bei einer gültigen id bleibt der Task offen)
Wenn das der Fall ist, sollte eine MsgBox erscheinen "Opening Failed!"
Das klappt jedoch nicht. Ob jetzt die id korrekt oder falsch ist macht keinen Unterschied und das Programm gibt immer aus: "Tunnel Open!"

Kann mir jemand helfen?

Hier noch der Code:

If IsNumeric(id) Then
With si
            si.cbSize = Len(si)
            si.fMask = SEE_MASK_NOCLOSEPROCESS
            si.hWnd = frmMain.hWnd
            si.lpVerb = "open"
            si.lpFile = App.Path & "\plink.exe"
            si.lpParameters = "-v -l support -pw " & id & " -R " & port & _
              ":localhost:5900 81.6.49.109"
            si.lpDirectory = App.Path
            si.nShow = SW_SHOWMAXIMIZED
            End With
 
If ShellExecuteEx(si) Then
                MsgBox "Tunnel Open!"
                appl = Shell(App.Path & "\winvnc.exe")
                frmMain.WindowState = 1
                cmdOpen.Enabled = False
                cmdClose.Default = True
            Else
                MsgBox "Opening Failed!"
            End If
Else
   MsgBox ("Bitte geben Sie eine gültige ID ein!")
End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: ModeratorMartoeng (Moderator)
Datum: 04.11.04 00:44

Du kriegst doch einen hProcess-Wert zurück. Frag einfach mit GetTickCount o.ä. ab, welche "Zeit" ist und dann wartest Du mit WaitForSingleObject auf das Beenden der Anwendung. Kehrt die Anwendung fast unmittelbar zurück, dann weißt Du, dass es nicht geklappt hat. Lässt sich bestimmt noch verfeinern die Methode, aber so vom Grundprinzip sollte das gehen.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: keyn
Datum: 04.11.04 09:22

Und wie würde das in etwa in meinem Code aussehen?
Muss mich entschuldigen, bin VB-Anfänger.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: ModeratorMartoeng (Moderator)
Datum: 04.11.04 14:50

Lies Dir mal die Dokus zu den Funktionen hier im vbarchiv durch.
Wenn Du dann noch Fragen hast, kannst Du sie gerne stellen.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: keyn
Datum: 08.11.04 11:54

Habe nun WaitForSingleObject eingebunden, nun habe ich aber das Problem dass solange der Prozess (plink.exe) ausgeführt wird, die CPU auf 100% Auslastung gejagt wird!
Is natürlich nich so ideal für die Perf.

If IsNumeric(id) Then
            si.cbSize = Len(si)
            si.fMask = SEE_MASK_NOCLOSEPROCESS
            si.hWnd = frmMain.hWnd
            si.lpVerb = "open"
            si.lpFile = App.Path & "\plink.exe"
            si.lpParameters = "-v -l support -pw " & id & " -R " & port & _
              ":localhost:5900 192.168.1.250"
            si.lpDirectory = App.Path
            si.nShow = SW_SHOWMAXIMIZED
 
            appl = ShellExecuteEx(si)
 
               'MsgBox "Tunnel Open!"
                imgred.Visible = False
                imgorange.Visible = False
                imggreen.Visible = True
                test = Shell(App.Path & "\winvnc.exe")
                frmMain.WindowState = 0
                cmdClose.Default = True
 
  Do
    DoEvents
  Loop Until WaitForSingleObject(si.hProcess, 0) <> WAIT_TIMEOUT
 
               'MsgBox "Opening Failed!"
                imgred.Visible = True
                imgorange.Visible = False
                imggreen.Visible = False
 
        Else
        MsgBox ("Bitte geben Sie eine gültige ID ein!")
        End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: ModeratorMartoeng (Moderator)
Datum: 09.11.04 18:51

Was macht denn diese Do-Loop-Schleife da drin?
Die lass mal weg.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: keyn
Datum: 10.11.04 10:39

Is doch zum Verrückterden! Jetzt habe ich es zwar gschafft das die CPU nicht mehr hochgejgt wird, jetzt friert aber die Anwendung ein solange Plink.exe offen ist!

Retval= ShellExecuteEx(si)
 
               'MsgBox "Tunnel Open!"
                imgred.Visible = False
                imgorange.Visible = False
                imggreen.Visible = True
                test = Shell(App.Path & "\winvnc.exe")
                frmMain.WindowState = 0
                cmdClose.Default = True
 
  Retval = WaitForSingleObject(si.hProcess, INFINITE)  
 
               'MsgBox "Opening Failed!"
                imgred.Visible = True
                imgorange.Visible = False
                imggreen.Visible = False
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ShellExecuteEX Bedingung einbauen 
Autor: ModeratorMartoeng (Moderator)
Datum: 10.11.04 18:40

Ja, das ist ja der Sinn von WaitForSingleObject, dass es solange wartet, bis die Anwendung geschlossen wird.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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