Salut ! [non, je plaisante] Difficulté avec API FindWindow [Résolu]

Signaler
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Salut à tous,

bon je galère avec l'API citée ^^
J'essaie de faire un complément VB (add-in) mais je n'arrive pas à retrouver un handle.

Pour simplifier mon problème, voici un bout de code :

Option Explicit

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As
Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Form_Load()
    Dim aAs Long, RetVal As Long, lpClassName As
String
    
    lpClassName =  Space(256)
    
    RetVal = GetClassName(132014, lpClassName, 256)
    
    MsgBox "ClassName: " + Left$(lpClassName, RetVal)
    
    a = FindWindow(lpClassName, vbNullString)
    MsgBox a
    
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Avec une fenêtre espion (Win ID) j'ai pu retrouver le Handle de la ToolsPalette (la barre d'outils qui contient les contrôles VB)
Donc j'ai triché, la valeur 132014 c'est le hWnd de la Tools, lpClassName me trouve bien " ToolsPalette " (le premier MsgBox)

A l'inverse, quand je fais MsgBox a, j'obtient 0 !

Quelqu'un a-t-il une idée ?
merci

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA

2 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
21
Salut (non je plaisante)
pas classique comme méthode ?
on cherche d'abord le handle puis ensuite la classe
FindWindows ne donne que les fenêtres parents, ensuite faut chercher les enfants

    h1 = FindWindow("wndclass_desked_gsk", vbNullString)
   
    If h1 <> 0 Then
       h2 = FindWindowEx(h1, 0&, "ToolsPalette", vbNullString)
       MsgBox h2
       End If

Daniel
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
Salut Daniel,

royal, merci beaucoup, c'est exactement ça 

Ps : pour le 
Salut (non je plaisante)  , en fait c'est suite à une dicution récente, on disait que ces titres étaient à proscrire. Donc ça me faisait sourire

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA