+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut Introduction aux fonctions d'accessibilité

    Bonjour à tous,

    Vous pouvez sur cette discussion commenter l'article suivant :
    OFFICE : Introduction aux fonctions d'accessibilité

    L'avez vous lu?
    Le trouvez vous intéressant?
    Commentaires, critiques, remerciement, ... tout est bienvenu.

    Pensez également à ajouter une note. ("Noter la discussion" en haut à droite)
    Votre avis nous intéresse.




    Retrouver les meilleurs cours et tutoriels pour apprendre Microsoft Office

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    Un exemple d'utilisation des fonctions masquées pour activer un onglet du ruban :
    Code à mettre dans un module : 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
     
    Public Function SetRibbonTabFocus(pTab As String) As Boolean
    Dim oChild As Variant
    Dim oRibbon As IAccessible
    Dim oTab As IAccessible
    Const ROLE_SYSTEM_CLIENT = &HA&
    Const ROLE_SYSTEM_WINDOW = &H9&
    Const ROLE_SYSTEM_PAGETAB = &H25&
    Const ROLE_SYSTEM_PROPERTYPAGE = &H26&
    Const ROLE_SYSTEM_PAGETABLIST = &H3C&
    On Error GoTo gestion_erreurs
    ' Ribbon Tool Bar
    Set oRibbon = CommandBars("ribbon")
    ' Ribbon Window
    Set oRibbon = oRibbon.accChild(ByVal 1&)
    ' Ribbon Client
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_CLIENT)
    ' Ribbon Client Window
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_WINDOW)
    ' Ribbon Client Window Client
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_CLIENT)
    ' Ribbon Client Window Client Window
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_WINDOW)
    ' Ribbon Property page
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_PROPERTYPAGE)
    ' Ribbon Tabs list
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_PAGETABLIST)
    ' Ribbon Tabs list Client
    Set oRibbon = FindChildByRoleOrName(oRibbon, , ROLE_SYSTEM_CLIENT)
    ' Tab
    Set oTab = FindChildByRoleOrName(oRibbon, pTab, ROLE_SYSTEM_PAGETAB)
    ' Click Tab
    Call oTab.accDoDefaultAction(ByVal 0&)
    ' True if OK
    SetRibbonTabFocus = True
    Exit Function
    gestion_erreurs:
    SetRibbonTabFocus = False
    End Function
     
    ' Fonction privée pour rechercher d'un objet accessible à partir de son parent, son role et son nom
    Private Function FindChildByRoleOrName(pParent As IAccessible, Optional pChildName As String = "*", Optional pChildRole As String = "*") As IAccessible
    Dim lName As String, lRole As Long
    Dim oChild As IAccessible
    Const NAVDIR_FIRSTCHILD = &H7&
    Const NAVDIR_NEXT = &H5&
    On Error GoTo gestion_erreurs
    Set oChild = pParent.accNavigate(NAVDIR_FIRSTCHILD, ByVal 0&)
    If pChildName <> "*" Then lName = oChild.accName(ByVal 0&)
    If pChildRole <> "*" Then lRole = oChild.accRole(ByVal 0&)
    If lRole Like pChildRole And lName Like pChildName Then
        Set FindChildByRoleOrName = oChild
        Exit Function
    End If
    Do
        Set oChild = oChild.accNavigate(NAVDIR_NEXT, ByVal 0&)
        If pChildName <> "*" Then lName = oChild.accName(ByVal 0&)
        If pChildRole <> "*" Then lRole = oChild.accRole(ByVal 0&)
        If lRole Like pChildRole And lName Like pChildName Then
            Set FindChildByRoleOrName = oChild
            Exit Do
        End If
    Loop
    Exit Function
    gestion_erreurs:
    Set FindChildByRoleOrName = Nothing
    End Function

    Utilisation : Pour par exemple activer l'onglet Accueil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call SetRibbonTabFocus("Accueil")

  3. #3
    Membre régulier
    Homme Profil pro
    Amateur
    Inscrit en
    juin 2010
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : juin 2010
    Messages : 111
    Points : 76
    Points
    76

    Par défaut Problèmes avec SDK 7.1

    Bonjour,
    Merci pour le module Intro aux fcts Accessibilité.
    J'ai installé SDK 7.1 (sous Système 7 et Office 2007)
    En essayant de l'implémenter j'ai quelques remarques et questions:
    Après recherches j'ai finalement trouvé que les modules AccExplorer32.exe, AccEvent32.exe, Inspect32.exe devraient se trouver dans la bibliothèque bin de µS SDK. En fait ils n'y sont pas.
    On trouve - sauf erreur de ma part, mauvaise installation ou autre
    AccEvent.exe, Inspect.exe
    J'ai cru comprendre que AccExplorer32.exe est remplacé par UISPY (je l'ai trouvé sur :http://andrewtokeley.net/archive/200...d-it-here.aspx

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    bjr,

    il faut que je remette à jour les liens

    le lien que je donne ne contient que la doc, pas les outils
    je ne trouve plus de liens vers les exécutables seuls

  5. #5
    Membre régulier
    Homme Profil pro
    Amateur
    Inscrit en
    juin 2010
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : juin 2010
    Messages : 111
    Points : 76
    Points
    76

    Par défaut

    Bjr,
    Je n'ai pas suivi tous les liens, mais l'impression que j'ai est que AccExplorer32.exe n'existe plus, remplacé par UISPY. Une discussion existe sur le site de µS http://msdn.microsoft.com/en-us/library/ms727247.aspx (les autres marchent en 32 bits, je ne sais pas s'il existe une version 64.)
    Le fonctionnement de UISPY semble un peu différent de AccExplorer32, je n'ai pas vu comment faire un drag & drop comme expliqué ds le tuto.

  6. #6
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 2 933
    Points : 5 117
    Points
    5 117
    Billets dans le blog
    13

    Par défaut Cliquer sur une PJ dans OUTLOOK

    Bonjour,

    Pour Commencer j'ai trouvé une source pour AccExplorer32 là https://github.com/blackrosezy/gui-inspect-tool.

    Alors je souhaiterai utiliser ces fonctions d'accessibilité pour cliquer sur la première PIECE JOINTE d'un Email dans OUTLOOK 2010 lorsque l'on est en Mode EXPLORATEUR, avec le volet de lecture affiché.

    Le mail concerné sera forcément celui sélectionné

    Nom : ol_click_pj.png
Affichages : 90
Taille : 61,5 Ko

    Je parviens à obtenir une instance avec SetAccObjFromPosition et à lancer l'action par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function DisplayElementUnderMouse()
        Dim oAcc As clAccessibility
        ' Nouvel objet
        Set oAcc = New clAccessibility
        ' Récupère l'objet sous le curseur de la souris
        ' Inscrit le nom et le rôle de l'objet sur la première cellule de la première feuille
        If oAcc.SetAccObjFromPosition Then
            Debug.Print oAcc.Name & " : " & oAcc.RoleText
        Else
            Debug.Print ""
        End If
        oAcc.DoSelect
        oAcc.DoDefaultAction
    End Function
    Ce que j'aimerai c'est Trouver cet objet sans la souris avec son nom, celui de la Pièce jointe (ici "ScannedImage-6.jpg (402 Ko)")
    et ensuite juste cliquer dessus (qui n'est pas l'action par defaut)


    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
    Function ClickPJOutlook()
        Dim lCpt As Long
        Dim ltexte As String
        Dim oAcc As clAccessibility
        ' Nouvel objet
        Set oAcc = New clAccessibility
        'oAcc.SetAccObjFrom OBJID_CLIENT
     
        Dim hwnd As Long, FenOutlook As String
        FenOutlook = Application.ActiveExplorer.caption
        On Error Resume Next
     
        If FenOutlook <> "" Then hwnd = activer_application.FindWindow(vbNullString, FenOutlook)
        oAcc.SetAccObjFromHwnd hwnd, OBJID_WINDOW
     
     
        Set oAcc = oAcc.FindChild("ScannedImage-6.jpg (402 Ko)", clAccessibility.ROLE_SYSTEM_LISTITEM, , , , True)
        If Not oAcc Is Nothing Then
            oAcc.DoDefaultAction
        End If
    End Function

    mais cela ne fonctionne pas ! je n'arrive pas à trouver la bonne syntaxe ou méthode.

    Nom : ol_click_pj_acexpl.png
Affichages : 88
Taille : 15,5 Ko

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    Bonjour,

    Oliv-, ta syntaxe semble correcte.
    Il a dû y a voir un changement depuis que j'ai écrit l'article.

    Essaye de modifier le type de lAccObj dans PrivFindChild du module clAccessibility :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim lAccObj As IAccessible
    au lieu de :
    Sur mon PC ça a fonctionné.

  8. #8
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 2 933
    Points : 5 117
    Points
    5 117
    Billets dans le blog
    13

    Par défaut

    Salut
    Merci beaucoup je vais tester la semaine prochaine.
    Est ce que on peut lancer autre chose que le doubleclic par défaut ?

Discussions similaires

  1. Introduction aux fonctions IMAP de PHP
    Par nicosmash dans le forum Langage
    Réponses: 4
    Dernier message: 30/09/2013, 13h04
  2. [AC-2007] tuto "Introduction aux fonctions d'accessibilité"
    Par JFDAccess dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/12/2010, 09h39
  3. [LG]Introduction aux pointeurs
    Par John_win dans le forum Langage
    Réponses: 7
    Dernier message: 22/11/2003, 11h11

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