vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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

Fortgeschrittene Programmierung
VB6 externes Programm mit minimiertem Fenster in Vordergrund holen WinXP 
Autor: armin
Datum: 27.06.12 09:51

Hallo, ich habe ein Problem mit dem in Vordergrund setzen eines minimierten externen Programm. Ich habe zwei Buttons in meine Form eingefügt, der eine öffnet den Internet Explorer mit einer bestimmten Adresse über die ShellExecute Funktion und der andere Button öffnet eine externe Exe.
Beim Internet Explorer funktioniert das in Vordergrund setzen tadellos, außer wenn der IE minimiert wurde, dann öffnet er nur die Taskleiste und markiert den Taskleisteneintrag des IE. Der Internet Explorer wird also nicht in den Vordergrund gebracht. Prinzipiell ist dies zwar kein Beinbruch, ich würde aber gerne wissen ob es möglich ist dies zu verhindern bzw. zu korrigieren.

Hier das Click-Event für den IE-Aufruf:
Private Sub cmdDoku_Click()
  On Error GoTo Error_Handler
 
  Dim lhWnd As Long
  Dim show As Long
  Dim sTitle As String
  Dim lRetVal As Long
  Dim sClassName As String
  Dim CurHWnd As Long
  Dim nLen As Long
  Dim sBuffer As String
 
  If IsEXERunning("iexplore.exe") Then
 
        Screen.MousePointer = 11
        CurHWnd = GetWindow(hwnd, GW_HWNDFIRST)
        Do While CurHWnd <> 0
        ' Klassennamen ermitteln
        sClassName = String$(256, " ")
        lRetVal = GetClassName(CurHWnd, sClassName, 255)
        sClassName = Left$(sClassName, InStr(sClassName, Chr$(0)) - 1)
 
         If sClassName = "IEFrame" Then
             SetForegroundWindow CurHWnd
         End If
 
    ' Handle des nächsten Fensters
    ' 0, wenn kein weiteres Fenster vorhanden
        CurHWnd = GetWindow(CurHWnd, GW_HWNDNEXT)
        Loop
        Screen.MousePointer = 0
  Else
     ShellExecute Me.hwnd, "Open", _
       "http://desiaugetc9-004/SKKernmachereiWeb/start.htm", _
          vbNullString, vbNullString, 1
  End If
  Exit Sub
Error_Handler:
  Dim MsgBoxButton As Long
  MsgBoxButton = MsgBox("FCentral.PRIVATE SUB CMDDOKU_CLICK:'" & _
    Err.Description & "'. Continue?", vbYesNo)
  If MsgBoxButton = vbYes Then Resume Next
  If MsgBoxButton = vbNo Then End
End Sub
Den Code habe ich aus einem VB-Workshop. Ich habe diese Problem schon öfters in diversen Foren gesehen, aber noch keine richtige Lösung gefunden.


Der zweite Button für die externe Anwendung stellt mich vor das größere Problem, hier wird, wenn die Anwendung minmiert wurde, die Taskleiste überhaupt nur sporadisch geöffnet und dann der Taskleisten Eintrag noch nicht mal markiert.

Hier der VB Code des Aufruf der externen Anwendung:
Private Sub cmdWorkingCard_Click()
 On Error GoTo Error_Handler
  Dim Retval As Long
  'Dim hWnd As Long
 
  Dim lhWnd As Long
  Dim show As Long
  Dim sTitle As String
  Dim lRetVal As Long
  Dim sClassName As String
  Dim CurHWnd As Long
  Dim nLen As Long
  Dim sBuffer As String
 
 
  If IsEXERunning("Arbeitskarte.exe") Then
 
    sTitle = "PDF VIEWER v2.0"
    lhWnd = FindWindow(vbNullString, sTitle)
    ShowWindow lhWnd, vbNormalFocus
 
     ' ______________________________________________________
     ' Test Alt----------------------------------------START
    Screen.MousePointer = 11
        CurHWnd = GetWindow(hwnd, GW_HWNDFIRST)
        Do While CurHWnd <> 0
        ' Klassennamen ermitteln
        sClassName = String$(256, " ")
        lRetVal = GetClassName(CurHWnd, sClassName, 255)
        sClassName = Left$(sClassName, InStr(sClassName, Chr$(0)) - 1)
 
         If sClassName = "TPDFViewer" Then
             SetForegroundWindow CurHWnd
         End If
    ' Handle des nächsten Fensters
    ' 0, wenn kein weiteres Fenster vorhanden
        CurHWnd = GetWindow(CurHWnd, GW_HWNDNEXT)
        Loop
        Screen.MousePointer = 0
    '___________________________________________________________
    ' Test Alt----------------------------------------ENDE
 
  Else
    Retval = ShellExecute(Me.hwnd, "open", _
      "C:\SuK\Arbeitskarte\Arbeitskarte.exe", _
      "C:\SuK\Task_umschalten\Arbeitskarte.exe", "C:\SuK\Arbeitskarte\", 5)
    'Retval = ShellExecute(Me.hwnd, "open", 
    ' "C:\SuK\Arbeitskarte\Arbeitskarte1024_768.exe", 
    ' "C:\SuK\Task_umschalten\Arbeitskarte.exe", "C:\SuK\Arbeitskarte\", 1)
  End If
  Exit Sub
Error_Handler:
  Dim MsgBoxButton As Long
  MsgBoxButton = MsgBox("FCentral.PRIVATE SUB CMDWORKINGCARD_CLICK:'" & _
    Err.Description & "'. Continue?", vbYesNo)
  If MsgBoxButton = vbYes Then Resume Next
  If MsgBoxButton = vbNo Then End
End Sub
Wenn mir diesbezüglich jemand helfen könnte, wäre ich äußerst dankbar.

Mit freundlichen Grüßen
Armin Ruh

Beitrag wurde zuletzt am 27.06.12 um 09:51:57 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
VB6 externes Programm mit minimiertem Fenster in Vordergrund...1.568armin27.06.12 09:51
Re: VB6 externes Programm mit minimiertem Fenster in Vorderg...858Franki02.07.12 02:09

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