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

VBA Discussion :

Court circuiter une boite de dialogue lancée par une fonction dans une dll


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut Court circuiter une boite de dialogue lancée par une fonction dans une dll
    Bonjour,

    Je dois utiliser une fonction présente dans une dll, mais cette fonction demande de saisir un code dans une boite de dialogue avant de donner son résultat.
    Ce n'est pas moi qui ai créé cette dll mais je suis obligé de l'utiliser.

    J'aimerais savoir comment envoyer la réponse à cette boite de dialogue automatiquement car je ne veux pas être obligé de saisir manuellement la réponse.
    Ne peut-on pas trouver (en ananlysant la dll, même si je ne sais pas faire), un moyen de donner ce code en parametre lorsque j'execute la fonction ?
    Ou alors, puis-je intevenir en saisie par vba sur la boite de dialogue pour rentrer le code ?

    Merci de vos réponses.

    (Je connais pas trop mal vba, mais pas du tout la programmation de dll)

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Que fait-elle, cette dll ? Que lui demandes-tu ? J'ai bien vu que tu dis être obligé d'en passer par elle mais... Dis toujours

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Ben c'est simple, c'est une identification de l'utilisateur qui l'utilise.

    Je l'appelle en lui donnant une chaine de caractère et sa longueur comme paramètres, elle me demande ensuite par boite de dialogue un code d'accès et elle me renvoie un booleen tout en transformant la chaine de départ en chaine cryptée (dont j'ai besoin pour la suite de mon programme).

    Je peux sans problème faire appel à la fonction par vba et lui donner en parametres la chaine et la longueur de la chaine, mais lorsque la fonction affiche une popup en me demande le code d'acces, je voudrais pas avoir à le saisir à la main.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    S'il n'y a pas un des paramétres qui appelle ta dll pour le mot de passe cela ne sera pas possible, car je pense que la boite de dialogue est générer par la dll.

    Si tu peux voir le concepteur de la dll pour rajouter ce paramètre ce serait le mieux.

    Starec

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Je peux essayer de voir avec le concepteur de la dll, mais il y a quasiment aucune chance qu'elle soit modifiée (ou même que j'ai accès à l'algorithme de contrôle du mot de passe).

    N'y aurait-il pas un moyen par automation, d'envoyer des commandes clavier sur la boite de dialogue ?
    Il faudrait pouvoir accéder comme un objet à cette boite de dialogue par exemple.
    Ou alors il faudrait pouvoir balancer des commandes clavier, comme ça, comme si c'était saisie par l'utilisateur, vu que la boite de dialogue se met en premier plan lorsqu'elle apparait... Est-ce qu'une commande vba existe pour faire ça ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je crois bien que tu n'auras pas de réponse éclairée si tu n'indiques pas de quelle dll il s'agit. Il est possible que quelqu'un connaisse ça (?)
    Bonne chance

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    C'est vrai.
    Je pensais que c'était une application "maison", mais il semblerait que ça soit un système d'authentification opensource appelé idealx.

    Si quelqu'un connait, peut-être est-il possible de le contourner...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si c'est un opensource? Tu devrais pouvoir trouver des renseignements sur le web, son utilisation a bien dû être expliquée

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    La seule chose qui me fait penser que c'est un open source, c'est que la dll s'appelle idealx, et que j'ai trouvé un site qui s'appelle idealx.com qui me semble en être l'auteur puisqu'il s'agit de cryptage et d'authentification sécurisée.
    Mais je comprend pas pour autant comment me servir de cette information...

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as regardé, ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Oui, j'avais même télechargé l'application.
    Mais ça ne ressemble pas à ce à quoi je suis confronté, car là c'est un logiciel de cryptage et signature de fichiers. Moi ce que j'ai c'est juste une dll qui contient une fonction d'authentification.
    Je ne m'y connais pas assez pour faire le rapprochement entre les 2...

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Pour information : j'ai trouvé la solution à mon problème.

    Il faut utiliser les fonctions suivantess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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 PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Pour pouvoir identifier la pop-up et y envoyer une donnée...

    La question que je me pose maintenant est la suivante :

    Comment faire pour utiliser les fonctions de detection de la popup et de saisie alors que mon code est en stand by puisqu'il attend la réponse à la popup justement ?
    Est-il possible de faire en sorte que mon code appelle cette dll, mais sans attendre le resultat, continue l'execution ?

    Merci beaucoup

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comment faire pour utiliser les fonctions de detection de la popup et de saisie alors que mon code est en stand by puisqu'il attend la réponse à la popup justement ?
    Est-il possible de faire en sorte que mon code appelle cette dll, mais sans attendre le resultat, continue l'execution ?
    Oui, tu peux utiliser une macro qui lance ta détection de popup en différé. Ta macro principale continueras après la ligne de code
    Regarde Application.onTime.
    Tu as plusieurs exemples sur le forum VBA dont un qui n'a pas 15 jours.
    Bonne chance

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup pour cette réponse...

    D'après ce que j'en ai lu ça devrait répondre à ma question.
    Je vous dirais ça dès que j'aurais pu le tester (pas avant la semaine prochaine malheureusement)

Discussions similaires

  1. Réponses: 10
    Dernier message: 27/04/2015, 17h28
  2. Réponses: 0
    Dernier message: 11/09/2014, 11h52
  3. Réponses: 13
    Dernier message: 23/05/2013, 20h38
  4. Réponses: 2
    Dernier message: 02/02/2011, 11h14
  5. Réponses: 7
    Dernier message: 01/04/2008, 13h57

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