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

VB 6 et antérieur Discussion :

Piloter une application externe


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut Piloter une application externe
    Bonjour à tous,

    Je cherche à piloter une appli externe (développée en Windev)

    Pour celà j'utilise les handles de mes fenetres et des composants.

    Puis j'envoie des instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lRet = SendMessage(ChampOuLabel, WM_SETTEXT, 0, "10")
    Lorsque j'envoie l'instruction ci-dessus, des caractères bizarres s'affichent dans le champ.

    Lorsque je fais un WM_GETTEXT pour récupérer la valeur du champ (par ex: 10) il me retourne le 1 suivi d'un carré.

    D'après vous, de quoi est-ce que celà peut provenir?

    Merci d'avance.
    Xavier

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Sans indiquer la valeur de ce caractère «bizarre», cela va être difficile de te répondre.
    A tout hasard, ce ne serait pas un Carriage Return ou un car 0 ?

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    ça varie à chaque fois (pour la même valeur envoyée):
    Xavier

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Le dernier paramètre doit être ByVal, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_GETTEXT = &HD
    Private Const WM_SETTEXT = &HC
    Dim lRet&
     
    Private Sub Command1_Click()
        lRet = SendMessage(Text1.hwnd, WM_SETTEXT, -1, ByVal "BONJOUR")
        lRet = SendMessage(Command1.hwnd, WM_SETTEXT, -1, ByVal "BONJOUR")
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    ok, merci beaucoup, ça marche.

    A y être, j'ai le handle du bouton "OK", comment lancer le clic du bouton avec SendMessage?

    Je regarde la piste du WM_COMMAND, mais sans succès pour l'instant.
    Xavier

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Ajoute au code précédent ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Const BM_CLICK& = &HF5&
    Private Sub Form_Load()
        lRet = SendMessage(Command1.hwnd, BM_CLICK, 0&, 0&)
    End Sub
    Tu peux utiliser Form_Click au lieu de Form_Load pour mieux voir le résultat.
    Bonne journée.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    super, ça marche.

    Où est-ce que tu trouves toutes ces infos? ça me serait bien utile, parce que je galère.
    Là je dois envoyer une instruction pour double cliquer sur une valeur d'une listbox...
    Xavier

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Voici tout le
    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
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_GETTEXT = &HD
    Private Const WM_SETTEXT = &HC
    Dim lRet&
    Private Const WM_LBUTTONDBLCLK = &H203
    Private Const BM_CLICK& = &HF5&
     
    Private Sub Command1_Click()
        lRet = SendMessage(Text1.hwnd, WM_SETTEXT, 0, ByVal "BONJOUR")
        lRet = SendMessage(Command1.hwnd, WM_SETTEXT, 0, ByVal "BONJOUR")
    End Sub
     
    Private Sub Form_DblClick()
        lRet = SendMessage(Text1.hwnd, WM_LBUTTONDBLCLK, 0&, 1&)
        lRet = SendMessage(List1.hwnd, WM_LBUTTONDBLCLK, 0&, 1&)
    End Sub
     
    Private Sub Form_Load()
        lRet = SendMessage(Command1.hwnd, BM_CLICK, 0&, 0&)
        With List1
         .AddItem Text1.Text & UCase(" Asdorve")
         .AddItem Me.Caption
         .AddItem Now
        End With
    End Sub
    Private Sub List1_DblClick()
      'List1 ne doit être vide, sinon pas de réaction
      With List1
          .BackColor = vbGreen
          .FontName = "Arial Black"
          .FontSize = 14
      End With
    End Sub
     
    Private Sub Text1_DblClick()
        Text1.ForeColor = vbRed
        Text1.FontBold = 1
        Text1.FontSize = 16
    End Sub
    Double-clique sur la feuille et tu verras les changements dans les contrôles.
    MSDN contient presque la totalité des astuces et aide à la programmation.
    Autre chose qu'il ne faut négliger : La visionneuse d'API Apiloader.exe.

    Bonne journée
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut

    Citation Envoyé par l_autodidacte
    MSDN contient presque la totalité des astuces et aide à la programmation.
    Autre chose qu'il ne faut négliger : La visionneuse d'API Apiloader.exe.


    De plus sur DVP outils, il y a aussi (entre autres) ApiViewer encore plus pratique quant tu l'associes avec ApiGuide
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Salut;
    Tout à fait.
    Merci pour le complément.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Merci à tous pour votre aide.
    Je vais me pencher plus en profondeur sur les documents que vous citez.

    A+
    Xavier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Piloter une application externe sans bouger la souris
    Par WDKyle dans le forum WinDev
    Réponses: 3
    Dernier message: 17/07/2013, 09h51
  2. Piloter une application externe
    Par Montor dans le forum Contribuez
    Réponses: 4
    Dernier message: 10/09/2012, 12h13
  3. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  4. Réponses: 6
    Dernier message: 07/09/2005, 20h31
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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