vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
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:  Views:  32.216 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein 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)



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.