API
Stagiaire WDF
Inscrit:
26/08/2006 07:13
De Suisse
Post(s): 16
Bonjour,
Je suis nouvelle sur ce site qui semble bien complet.
Je debute aussi sur windev, étant plutot habituée a visual basic.
Je voulais essayer un truc peut etre un peu bete pour decouvrir : l'envoi de message sur un salon de discussion dans le logiciel AOL.

windev ne transcris pas vraiment le code vb et je me retrouve avec plein d'erreur.

en vb6 ca donnais:

Private Sub Command2_Click()
    miaou.SetText "" ' On vide la zone de saisie
    miaou.SetText txtSend.Text ' On met le texte
    miaou.ClickIconSend ' Click sur l'icone d'envoit
End Sub

Private Sub Form_Load()
    miaou.AOL_GetHandles ' Récupération des handles AOL
End Sub


et dans le module miaou:
' APIs
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public 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
Public Declare Function SendMessageLong& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Public Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
' Constantes
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_KEYUP = &H101
Public Const VK_SPACE = &H20
Public Const WM_SETTEXT = &HC
' Variables globales
Public AOL_RoomChild As Long 'Handle de la child du salon
Public AOL_EditBox As Long 'Handle de la zone de texte
Public AOL_IconSend As Long 'Handle de l'icone pour send le texte en salon
' AOL_GetHandles : Récupère les handles AOL
' Retourne true si le salon a été trouvé sinon retourne false
Public Function AOL_GetHandles() As Boolean
'Déclare les variables
Dim AOL As Long, Mdi As Long, Child As Long, Rich As Long, AOLList As Long, AOLIcon As Long, AOLStatic As Long, RichLS As Long, Ico1 As Long, Ico2 As Long
'Récupère des handles principaux
AOL& = FindWindow("AOL FRAME25", vbNullString)
Mdi& = FindWindowEx(AOL&, 0&, "MDIClient", vbNullString)
'Boucle pour trouver le salon
Boucle:
    'Trouve la child
    Child& = FindWindowEx(Mdi&, Child&, "AOL Child", vbNullString)
    'Si n 'existe pas alors on est pas en salon
    If Child& = 0 Then
        'MsgBox "Aucune child trouvée..."
        Exit Function
    End If
    'Récupère les objets
    Rich& = FindWindowEx(Child&, 0&, "RICHCNTL", vbNullString)
    AOLList& = FindWindowEx(Child&, 0&, "_AOL_Listbox", vbNullString)
    AOLIcon& = FindWindowEx(Child&, 0&, "_AOL_Icon", vbNullString)
    AOLStatic& = FindWindowEx(Child&, 0&, "_AOL_Static", vbNullString)
    RichLS& = FindWindowEx(Child&, 0&, "richcntlreadonly", vbNullString)
    'Si on a tout trouvé, alors c'est le salon
    If Rich& <> 0& And AOLList& <> 0& And AOLIcon& <> 0& And AOLStatic& <> 0& Then
        'Stoque les handles dans la structure
        AOL_RoomChild = Child&
        AOL_EditBox = Rich&
        'Récupère l'icone envoyant le texte en salon
        AOLIcon = 0
        For a = 0 To 3
            AOLIcon = FindWindowEx(Child&, AOLIcon, "_aol_icon", vbNullString)
        Next a
        AOL_IconSend = AOLIcon
        'Tout s'est bien passé
        AOL_GetHandles = True
        Exit Function
    End If
GoTo Boucle

End Function
' ClickIcon : Click sur une icone AOL
Public Sub ClickIconSend() 'Click sur une icone AOL
    Call SendMessageLong(AOL_IconSend, WM_LBUTTONDOWN, 0&, 0&)
    Call SendMessageLong(AOL_IconSend, WM_KEYUP, VK_SPACE, 0&)
End Sub
' SetText : Ajoute du texte dans un editbox
Sub SetText(Txt As String) 'Envoyer du txt
    Call SendMessageByString(AOL_EditBox, WM_SETTEXT, Len(Txt), Txt)
End Sub


Merci pour vos eclaircissements

Contribution le : 26/08/2006 07:26
Créer un fichier PDF de la contribution Imprimer


Re: API
Stagiaire WDF
Inscrit:
26/08/2006 07:13
De Suisse
Post(s): 16
dans procedures globales j'ai mis:
FindWindow est un entier // Type C :HWND
lpClassName est un entier // Type C :LPCSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne
lpWindowName est un entier // Type C :LPCSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne
FindWindow=API("USER32","FindWindowA",lpClassName,lpWindowName)

FindWindowEx est un entier // Type C :HWND
VAR_1_HWND est un entier // Type C :HWND
VAR_2_HWND est un entier // Type C :HWND
VAR_3_LPCSTR est un entier // Type C :LPCSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne
VAR_4_LPCSTR est un entier // Type C :LPCSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne
FindWindowEx=API("USER32","FindWindowExA",VAR_1_HWND,VAR_2_HWND,VAR_3_LPCSTR,VAR_4_LPCSTR)

SendMessageLong est un entier // Type C :LRESULT
hWnd est un entier // Type C :HWND
Msg est un entier sans signe // Type C :UINT
wParam est un entier // Type C :WPARAM
lParam est un entier // Type C :LPARAM
SendMessageLong=API("USER32","SendMessageA",hWnd,Msg,wParam,lParam)

SendMessageByString est un entier // Type C :LRESULT
hWnd2 est un entier // Type C :HWND
Msg2 est un entier sans signe // Type C :UINT
wParam2 est un entier // Type C :WPARAM
lParam2 est un entier // Type C :LPARAM
SendMessageByString=API("USER32","SendMessageA",hWnd2,Msg2,wParam2,lParam2)


les constantes... apparement il faut les mettres ailleurs... et WK_SPACE n'est pas listée dans WDAPI
WM_LBUTTONDOWN = 513
WM_KEYUP = 257
VK_SPACE = 32
WM_SETTEXT = 12

Contribution le : 26/08/2006 08:24
Créer un fichier PDF de la contribution Imprimer


Re: API
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Voici quelques informations qui pourrait vous être utiles.
Pour les constantes, il faut les déclarer dans le code d'initialisation du projet de la façon suivante :

CONSTANT
     <Nom de la constante 1> = <Valeur 1>
     <Nom de la constante 2> = <Valeur 2>
FIN


N.B. : WK_SPACE n'est pas listé dans WDAPI car il fallait taper VK_SPACE.

En VB, il faut déclarer les procédures auxquelles on fait appel dans le programme. En WinDev, on ne le fait pas.
Il faut ôter les lignes du style "FindWindow=API("USER32","FindWindowA",lpClassName,lpWindowName)" de votre code.

Il ne faut utiliser cette syntaxe qu'au moment où vous avez réellement besoin de la fonction, avec les bonnes valeurs en paramètre.

P.S. : Lorsqu'il faut passer un pointeur de chaine à une fonction, il faut d'abord déclarer une chaine( par ex : toto est une chaine ASCIIZ sur 255), puis passer la chaine à la fonction de la façon suivante : API("USER32"","FindWindowA",&toto,....)

Bon dév.,

Totof

Contribution le : 26/08/2006 08:41
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: API
Stagiaire WDF
Inscrit:
26/08/2006 07:13
De Suisse
Post(s): 16
Merci bien pour les infos


PROCEDURE SetText(Txt est chaîne) 
AppelDLL32("USER32","SendMessageA",AOL_EditBox, WM_SETTEXT, Taille(Txt), Txt)
PROCEDURE ClickIconSend() // Click sur une icone AOL
 
AppelDLL32("USER32","SendMessageA",AOL_IconSend,WM_LBUTTONDOWN, 0, 0)
AppelDLL32("USER32","SendMessageA",AOL_IconSend,WM_KEYUP, VK_SPACE, 0)
FONCTION AOL_GetHandles()  
ValeurRetour est booléen


// Déclare les variables
AOL est entier; Mdi est entier; Child est entier; Rich est entier; AOLList est entier; AOLIcon est entier; AOLStatic est entier; RichLS est entier; Ico1 est entier; Ico2 est entier

// Récupère des handles principaux
AOL=API("USER32","FindWindowA","AOL FRAME25", Caract(0))
Mdi=API("USER32","FindWindowExA",AOL,0,"MDIClient", Caract(0))


// Boucle pour trouver le salon

    // Trouve la child
	Child=API("USER32","FindWindowExA",Mdi,Child,"MDIClient", "AOL Child", Caract(0))
    
    
    // Si n 'existe pas alors on est pas en salon
    SI Child = 0 ALORS
        // MsgBox "Aucune child trouvée..."
        RENVOYER ValeurRetour
    FIN 
    
    // Récupère les objets
	Rich=API("USER32","FindWindowExA",Child,0,"RICHCNTL", Caract(0))
	AOLList=API("USER32","FindWindowExA",Child,0,"_AOL_Listbox", Caract(0))
	AOLIcon=API("USER32","FindWindowExA",Child,0,"_AOL_Icon", Caract(0))
	AOLStatic=API("USER32","FindWindowExA",Child,0,"_AOL_Static", Caract(0))
	RichLS=API("USER32","FindWindowExA",Child,0,"richcntlreadonly", Caract(0))
   
    
    // Si on a tout trouvé, alors c'est le salon
    SI ((Rich <> 0) ET( AOLList <> 0 ET( AOLIcon <> 0 ET AOLStatic <> 0 )))ALORS
        // Stoque les handles dans la structure
        AOL_RoomChild = Child
        AOL_EditBox = Rich
        
        // Récupère l'icone envoyant le texte en salon
        AOLIcon = 0
        i est un entier
        POUR i = 0 A 3
			AOLIcon =	API("USER32","FindWindowExA",Child,AOLIcon,"_AOL_Icon", Caract(0))
    
        FIN
        AOL_IconSend = AOLIcon
        
        // Tout s'est bien passé
        ValeurRetour = Vrai
        RENVOYER ValeurRetour
    FIN 



RENVOYER ValeurRetour


CONSTANT
	WM_LBUTTONDOWN = 513
	WM_KEYUP = 257
	VK_SPACE = 32
	WM_SETTEXT = 12
FIN

// ===============================================================================
//  Variables globales
// ===============================================================================
AOL_RoomChild est entier // Handle de la child du salon
AOL_EditBox est entier // Handle de la zone de texte
AOL_IconSend est entier


command2
SetText( "") //  On vide la zone de saisie)
    SetText( txtSend..Valeur) //  On met le texte)
   ClickIconSend //  Click sur l'icone d'envoit



y a encore du boulot

Contribution le : 26/08/2006 09:30
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2