vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 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

Visual-Basic Einsteiger
Re: AppActivate AppID, vbMaximizedFocus 
Autor: RalfH
Datum: 29.09.03 08:22

Servus,

die Funktion AppActivate kann nicht die Fenstergröße ändern. Der 2. Parameter (BOOLEAN) gibt an, das VB solange warten soll, bis das Programm auch tatsächlich aktiviert wurde (kann u.U. zu HangUp's führen).

Füge einfach den folgenden Code in ein Modul(!). Soll der Code in ein Form-Modul, musst Du alle Public's bis einschließlich Public Enum vbWindowState in Private ändern.

Anschließend musst Du nur noch in Deinem "alten" Code die Zeile:
AppActivate AppID, vbMaximizedFocus
in:
WindowActivate AppID, ShowMaximized
ändern.

Option Explicit
 
' ermittelt das Handle eines Fenster durch Klasse oder Titel
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
' ermittelt das nachfolgende Fenster (mit GW_HWNDNEXT)
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
  ByVal wCmd As Long) As Long
 
Public Const GW_HWNDNEXT = 2
 
' liefert TRUE, wenn eine Fenster minimiert ist
Public Declare Function IsIconic Lib "user32" ( _
  ByVal hwnd As Long) As Long
 
' liefert TRUE, wenn eine Fenster maximiert ist
Public Declare Function IsZoomed Lib "user32" ( _
  ByVal hwnd As Long) As Long
 
' ändert den Fensterstatus
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
  ByVal nCmdShow As Long) As Long
 
Public Const SW_SHOWNORMAL As Long = 1
Public Const SW_SHOWMAXIMIZED As Long = 3
Public Const SW_MINIMIZE As Long = 6
 
' ermittelt die Prozess-ID eines Fenster anhand des Fenster-Handle
Public Declare Function GetWindowThreadProcessId Lib "user32" ( _
  ByVal hwnd As Long, lpdwProcessId As Long) As Long
 
Public Enum vbWindowState
  ShowNormal = SW_SHOWNORMAL
  ShowMaximized = SW_SHOWMAXIMIZED
  ShowMinimized = SW_MINIMIZE
End Enum
 
' gibt die Prozess-ID eines Fenster zurück
Private Function GetWindowTaskID(ByVal hwnd As Long) As Long
  Dim lRet As Long, lProcessID As Long
 
  ' Prozess-ID des Fensters ermitteln
  lRet = GetWindowThreadProcessId(hwnd, lProcessID)
 
  ' Rückgabewert setzen
  GetWindowTaskID = lProcessID
End Function
 
' Aktiviert ein Fenster mit Hilfe der Prozess-ID
Public Function WindowActivate(ByVal AppID As Long, _
  Optional ByVal AppState As vbWindowState = ShowNormal) As Boolean
 
'  on error resume next
 
  Dim Handle As Long, lTaskID As Long
 
  ' erstes Fenster ermitteln
  Handle = FindWindow(vbNullString, vbNullString)
 
  ' alle Fenster durchlaufen
  Do Until Handle = 0
 
    ' Prozess-ID des gefundenen Fensters ermitteln
    lTaskID = GetWindowTaskID(Handle)
 
    ' Prozess-ID des gefundenen Fensters mit der übergebenenen
    ' Prozess-ID (AppID) vergleichen, wenn beide gleich sind,
    ' dann ist das gefundene Fenster das gesuchte Fenster
    If lTaskID = AppID Then
 
      ' Fensterstatus prüfen und ggf. ändern
      Select Case AppState
 
        ' normale Größe
        Case ShowNormal
          ' Fenstergröße nur ändern, wenn Fenster minimiert
          ' oder maximiert ist
          If IsIconic(Handle) Or IsZoomed( _
            Handle) Then ShowWindow Handle, AppState
 
        ' Maximiert
        Case ShowMaximized
          ' Fenstergröße nur ändern, wenn Fenster nicht maximiert ist
          If IsZoomed(Handle) = False Then ShowWindow Handle, AppState
 
        ' Minimiert
        Case ShowMinimized
          ' Fenstergröße nur ändern, wenn Fenster nicht minimiert
          If IsIconic(Handle) = False Then ShowWindow Handle, AppState
 
      End Select
 
      ' Fenster aktivieren
      AppActivate AppID, False
 
      ' Funktions-Rückgabewert auf erfolgreich (TRUE) setzen
      WindowActivate = True
 
      ' Funktion beenden
      Exit Function
    End If
 
    ' nächstes Fenster suchen
    Handle = GetWindow(Handle, GW_HWNDNEXT)
  Loop
 
  ' hier gehts nur hin, wenn kein Fenster mit der angegebenen
  ' Prozess-ID (also AppID) gefunden wurde
 
  ' Funktions-Rückgabewert auf NICHT erfolgreich (FALSE) setzen
  WindowActivate = False
 
End Function

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
AppActivate AppID, vbMaximizedFocus6.914Harald27.09.03 10:25
Re: AppActivate AppID, vbMaximizedFocus5.977RalfH29.09.03 08:22
Re: Nochmal5.662RalfH29.09.03 08:29

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