vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Access   |   VB-Versionen: VBA14.12.02
VBA: Window-Handle eines Controls ermitteln

Dieser Tipp zeigt, wie sich z.B. das Window-Handle einer TextBox in VBA ermitteln lässt - trotzt fehlender hWnd-Eigenschaft.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  27.759 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein Beispielprojekt 

Wir VB'ler sind es ja gewohnt, dass ein Control über eine hWnd-Eigenschaft verfügt - sprich über diese Eigenschaft bekommen wir das Windowhandle des Controls geliefert. Dieses Handle wird z.B. oft von diversen API-Funktionen benötigt.

Die FTP-Funktionen unserer  VBEx32.DLL z.B. benötigen ebenfalls das Windowhandle einer TextBox, um den Status beim Up- und Download von Dateien anzeigen zu können. Auch die beliebte  sevZip32.DLL benötigt für das Anzeigen des ZIP-Vorgangs das Handle einer TextBox.

In VBA jedoch verfügt die TextBox über keine hWnd-Eigenschaft

Nachfolgender Tipp zeigt, wie Sie das Fensterhandle dennoch ermitteln können. Hierzu benötigen wir die GetFocus API-Funktion, die das Windowhandle des aktiven Controls der eigenen Anwendung zurückgibt - natürlich nur, sofern das Control auch ein Window ist (ein Label z.B. ist kein Window und verfügt deshalb auch nicht über ein Windowhandle).

' benötigte API-Deklaration
Private Declare Function GetFocus Lib "user32" _
  Alias "GetFocus" () As Long

Um nun das Handle einer beliebigen TextBox unserer VBA-Form zu ermitteln, ist es also notwendig, zunächst den Fokus auf die TextBox zu setzen, um dann über GetFocus das Fensterhandle zu bekommen:

' Window-Handle eines Controls ermitteln
Public Function Control2hWnd(oControl As Control) As Long
  On Error Resume Next
 
  ' Fokus auf das Control setzen
  oControl.SetFocus
  If Err Then
    ' Fehler? Dann 0 zurückgeben
    Control2hWnd = 0
  Else
    ' Windowhandle ermitteln
    Control2hWnd = GetFocus()
  End If
 
  On Error GoTo 0
End Function

Aufruf:

Dim hWnd As Long
hWnd = Control2hWnd(TextBox1)

Dieser Tipp wurde bereits 27.759 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (2 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 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