IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] Trouver un handle, simuler clic sur bouton


Sujet :

Windows Forms

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    D'après les informations que j'ai, il me faut donc utiliser le nom de ma fenêtre et sa classe, les déclarations de mes fonctions :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Const ClassName = "#32770" 
        Private Const WindowName1 = "ACQ" 
        Private Const WindowName2 = "Ouvrir" 
     
        Private Declare Function FindWindow _ 
            Lib "user32" Alias "FindWindowA" ( _ 
            ByVal lpClassName As String, _ 
            ByVal lpWindowName As String _ 
            ) As Long 
     
        Private Declare Function SendMessage _ 
            Lib "user32" Alias "SendMessageA" ( _ 
            ByVal hwnd As Long, _ 
            ByVal wMsg As Long, _ 
            ByVal wParam As Long, _ 
            ByVal lParam As String _ 
            ) As Long

    Pour pouvoir controler une application il faut que j'envois des messages à son process ( à créer ), un BM_CLICK par ex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub run_app() 
           Dim app As New Process 
           Dim hwnd As Long        
           app.StartInfo.FileName = txt_app_exe.Text 
           app.Start() 
           hwnd = FindWindow(ClassName, WindowName1)     ' j'utilise mon FindWindow 
     
        End Sub
    Là j'ai normalement trouvé ma fenêtre ACQ mais il faut trouver le bouton ... comment puis-je faire ?

    Ensuite j'ai une fenêtre ouvrir pour choisir l'image que je veux importer, il faut donc que je trouve son hwnd ... que je lui donne le path de mon image, et que je clic sur le bouton ouvrir ...

    Je n'ai donc pas encore toute les fonctions nécessaires pour le faire,

    Que dois-je faire ?

    Merci

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Bonjour, je vien d'essayer ca : rien ne se passe ...


  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Bonjour

    Je viens d'essayer comme ca ...

    mes Handle1 2 et 3 changent constament .... à chaque clic du bouton 1 ...

    les fonctions ne doivent pas me donner ce que je cherche ...

    une erreur ??

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Private Declare Function FindWindow _
            Lib "user32" Alias "FindWindowA" ( _
            ByVal lpClassName As String, _
            ByVal lpWindowName As String _
            ) As Long
     
        Private Declare Function FindWindowEx _
            Lib "user32" Alias "FindWindowExA" ( _
            ByVal hWnd1 As Long, _
            ByVal hWnd2 As Long, _
            ByVal lpsz1 As String, _
            ByVal lpsz2 As String _
            ) As Long
     
        Private Declare Function SendMessage _
            Lib "user32" Alias "SendMessageA" ( _
            ByVal hwnd As Long, _
            ByVal wMsg As Long, _
            ByVal wParam As Long, _
            ByVal lParam As String _
            ) As Long
     
        Private Declare Function ShowWindow _
             Lib "user32" ( _
             ByVal hwnd As Long, _
             ByVal nCmdShow As Long _
        ) As Long
     
        Private Const BM_CLICK As Long = &HF5
        Private Const ClassName1 As String = "JULIE"
        Private Const ClassName2 As String = "#32770"
        Private Const ClassName3 As String = "BOUTON"
        Private Const WindowName1 As String = "JULIE:W"
        Private Const WindowName2 As String = "ACQ"
        Private Const WindowName3 As String = "BB:Import^Importer une radio, une image"
        Private Const WindowName4 As String = "Ouvrir"
     
        Private Handle1 As Long = 0
        Private Handle2 As Long = 0
        Private Handle3 As Long = 0
     
        Private Sub Findwin()
     
            ' trouver le hwdn de la fenetre principale de JULIE
            Handle1 = FindWindow(ClassName1, WindowName1)
            ' trouver le hwdn de la fenetre fille ACQ
            Handle2 = FindWindow(ClassName2, WindowName2)
            ' trouver le hwdn du bouton parcourir
            Handle3 = FindWindowEx(Handle1, Handle2, "ClassName3", WindowName3)
     
        End Sub
     
        Private Sub SendMSG()
            SendMessage(Handle3, BM_CLICK, 0, 0)
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Findwin()
            lbl_HW1.Text = Handle1
            lbl_HW2.Text = Handle2
            lbl_HW3.Text = Handle3
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            SendMSG()
        End Sub

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    en fait il y a plusieur niveau de fenetre parent ....

    principale / 2nd / 3ème / bouton ...

    la 1ere est JULIE:W la 3 ème est ACQ

    je fais comment avec mes fonctions ?

    la 2ND a un nom variable : "NOM: text variable"

    je ne suis pas sorti de l'auberge

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    toutes les infos sur les fenètre et boutons
    Images attachées Images attachées

  6. #26
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    J'ai parcouru en diagonale mais je n'ai pas compris ce qui n'allait pas...
    (Celà fait un certain temps que je n'ai plus travaillé avec ces APIs aussi)

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    il n'y a pas moyen de le faire sans chercher les parents ?

    ou alors ... de rechecher le handle d'une fenètre qu'avec le debut de son nom ? un nom comme "BOUCHE: nom prenom "

    nom et prénom change bien sur ....

  8. #28
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Bonjour

    un petit up

    Merci

  9. #29
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Plusieurs APIs aux choix :
    • The GetCursorPos function retrieves the cursor's position, in screen coordinates.
      The WindowFromPoint function retrieves a handle to the window that contains the specified point.
    • The ChildWindowFromPoint function determines which, if any, of the child windows belonging to a parent window contains the specified point. The search is restricted to immediate child windows, grandchildren, and deeper descendant windows are not searched.
      The RealChildWindowFromPoint function retrieves a handle to the child window at the specified point. The search is restricted to immediate child windows; grandchildren and deeper descendant windows are not searched
    • The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window, in turn, to an application-defined callback function.
      The EnumChildWindows function enumerates the child windows that belong to the specified parent window by passing the handle to each child window, in turn, to an application-defined callback function.


    C'est tout ce que je connais pour les scans des différentes fenêtres et controles...

  10. #30
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Merci je vais etudié ca

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Citation Envoyé par NicolasJolet
    Plusieurs APIs aux choix :
    • The EnumChildWindows function enumerates the child windows that belong to the specified parent window by passing the handle to each child window, in turn, to an application-defined callback function.


    C'est tout ce que je connais pour les scans des différentes fenêtres et controles...
    CA !!

    Je fais un findWindow sur la fenètre principale, je fais un EnumChildWindows et s'il me trouve une fenetre avec un nom : ACQ ( GetWindowText ? )

    je peux chercher le bouton importer et lui envoyer un send message non ?

    Merci

  12. #32
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    DANS ALL API

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Form_Load()
        'KPD-Team 2000
        'URL: http://www.allapi.net/
        'E-Mail: KPDTeam@Allapi.net
        Me.AutoRedraw = True
        EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
    End Sub
    'in a module
    Declare Function GetDesktopWindow Lib "user32" () As Long
    Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
        Dim sSave As String
        'Get the windowtext length
        sSave = Space$(GetWindowTextLength(hwnd) + 1)
        'get the window text
        GetWindowText hwnd, sSave, Len(sSave)
        'remove the last Chr$(0)
        sSave = Left$(sSave, Len(sSave) - 1)
        If sSave <> "" Then Form1.Print sSave
        'continue enumeration
        EnumChildProc = 1
    End Function
    Si je comprend bien EnumChildProc est appelé par EnumChildWindows à chaque enfant trouvé ....


    · lpEnumFunc
    Points to an application-defined callback function. For more information about the callback function, see the EnumChildProc callback function.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
    ca donnerait quoi en VBnet ? je n'ai pas encore vu ce systeme d'appelle

    Merci

  13. #33
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Je pense que ca peut rester tel quel...

  14. #34
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    zut j'ai pas eu de notification

    Merci pour ta réponse

Discussions similaires

  1. [Débutant] Lien HTML simulant clique sur Bouton ASP.net
    Par jck2003 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 28/07/2011, 14h09
  2. Simuler clic sur un lien
    Par hugo7 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/03/2011, 18h04
  3. Boucle sur formulaire de simulation de clic sur bouton
    Par arnolano0 dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/02/2010, 10h34
  4. Simuler clic sur bouton image sans nom
    Par andrebernard dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/03/2009, 14h00
  5. [pocket PC] simuler clic sur fenêtre alerte
    Par EMIexperience dans le forum Mobiles
    Réponses: 1
    Dernier message: 31/07/2008, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo