Ai-je le hWnd de la fenêtre/formulaire en cours dans VB6?Obtenir hWnd de la fenêtre/formulaire en cours dans VB6?
Répondre
Si vous êtes sur le formulaire: Me.hWnd
. Si vous ne savez pas quelle forme est la forme actuelle: Screen.ActiveForm.hWnd
Il a été longtemps que je VB6, mais ce que je me souviens:
Vous voulez ouvrir le Viewer API, qui devrait être dans le menu Démarrer dans l'entrée VB6. Lorsque vous l'ouvrez, vous voulez sélectionner win32api.txt, et vous obtiendrez une liste de toutes les fonctions de l'API Win32. C'est le moyen le plus simple de ne pas gâcher les signatures de fonction. Copiez et collez la déclaration de la fonction dans l'un de vos modules VB6.
J'ai toujours "triché" et simplement cherché ma fenêtre par nom de légende, au lieu de boucler sur toutes les fenêtres disponibles avec GetWindow. Si vous êtes d'accord avec cela, vous voulez utiliser FindWindow et passer le nom de la légende comme deuxième paramètre.
Utilisation de l'API de Windows, GetForegroundWindow()
obtiendrez la poignée de la fenêtre supérieure quelle que soit l'application, il est originaire, et GetActiveWindow()
obtiendrez la poignée de de votre application fenêtre active. Les déclarations Declare
dont vous aurez besoin:
Declare Function GetForegroundWindow Lib "user32.dll"() As Long
Declare Function GetActiveWindow Lib "user32.dll"() As Long
Appel soit fonction retournera une poignée de fenêtre comme décrit ci-dessus.
+1. Évidemment, la fenêtre actuellement active peut ne pas être un formulaire. – MarkJ
+1 Bonne réponse aussi. –