Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 769 fois - Téléchargée 45 fois
' Fonction Chatsend détaillée et commentée Option Explicit '------------------------------------- ' déclarations des APIs '------------------------------------- Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) Private Declare Function FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) Private Declare Function SendMessageString& Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) Private Declare Function SendMessageLong& Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) '------------------------------------- ' déclarations des constantes '------------------------------------- Private Const WM_SETTEXT = &HC Private Const WM_GETTEXT = &HD Private Const WM_GETTEXTLENGTH = &HE Private Const WM_CHAR = &H102 Private Const VK_RETURN = &HD Public Function ChatSend(ByVal Txt As String) On Error Resume Next Dim Room As Long, Rich As Long, Rich2 As Long, GetTrim As Long, Min As Single Dim Aol As Long, MDI As Long, Child As Long, List As Long, Texte As String Dim AOLIcon As Long, ZTxt As Long, TrimSpace As String, GetString As Long Aol& = FindWindow("AOL Frame25", vbNullString) ' on récupère le handle de la fenêtre principale d'AOL MDI& = FindWindowEx(Aol&, 0&, "MDIClient", vbNullString) ' puis celui de la MDI '------------------------------------- ' recherche de la fenêtre du salon AOL '------------------------------------- Child& = FindWindowEx(MDI&, 0&, "AOL Child", vbNullString) ' 1er AOL Child Rich& = FindWindowEx(Child&, 0&, "RICHCNTL", vbNullString) ' on cherche le handle de "RICHCNTL" sur le 1er AOL Child List& = FindWindowEx(Child&, 0&, "_AOL_Listbox", vbNullString) ' idem pour une "_AOL_Listbox" AOLIcon& = FindWindowEx(Child&, 0&, "_AOL_Icon", vbNullString) ' puis pour une "_AOL_Icon" ZTxt& = FindWindowEx(Child&, 0&, "_AOL_Static", vbNullString) ' enfin une zone "_AOL_Static" If Rich& <> 0& And List& <> 0& And AOLIcon& <> 0& And ZTxt& <> 0& Then ' si tous les éléments sont présents sur le AOL Child Room& = Child& ' on a trouvé la fenêtre du salon et on place son handle dans la variable Room& Else 'sinon Do Child& = FindWindowEx(MDI&, Child&, "AOL Child", vbNullString) ' on refait la même chose avec le AOL Child suivant (FindWindowEx(MDI&,Child& <- là on signale qu'on prend la suivante) Rich& = FindWindowEx(Child&, 0&, "RICHCNTL", vbNullString) List& = FindWindowEx(Child&, 0&, "_AOL_Listbox", vbNullString) AOLIcon& = FindWindowEx(Child&, 0&, "_AOL_icon", vbNullString) ZTxt& = FindWindowEx(Child&, 0&, "_AOL_static", vbNullString) If Rich& <> 0& And List& <> 0& And AOLIcon& <> 0& And ZTxt& <> 0& Then ' si tous les éléments sont trouvés Room& = Child& ' alors on place le handle dans la variable Room& End If Loop Until Child& = 0& ' on continue tant que l'on est pas arrivé au dernier AOL Child (plus d'AOL Child renvoie 0&) End If If Room& = 0& Then Exit Function 'si on a pas trouvé la fenêtre du salon alors on termine la fonction '------------------------------------- ' recherche de la zone de texte '------------------------------------- Rich& = FindWindowEx(Room&, 0&, "RICHCNTL", vbNullString) ' on prend la 1ère "RICHCNTL" (-> richtextbox AOL) qui correspond à la zone de saisie sur AOL7 Rich2& = FindWindowEx(Room&, Rich&, "RICHCNTL", vbNullString) ' on prend la suivante qui correspond à la zone de saisie sur les autres versions d'AOL If Rich2& = 0 Then Rich2& = Rich& ' si la "RICHCNTL" 2 renvoie 0 on est donc sur AOL7, on va envoyer les messages sur la 1ère "RICHCNTL" '------------------------------------- ' récupération du texte de la zone de saisie '------------------------------------- GetTrim& = SendMessageLong(Rich2&, WM_GETTEXTLENGTH, 0&, 0&) ' on utilise un SendMessageLong avec la constante WM_GETTEXTLENGTH qui va renvoyer la longueur du texte et placer le résultat dans GetTrim& TrimSpace$ = Space$(GetTrim&) ' on crée l'espace mémoire nécéssaire au stockage du texte dans TrimSpace$ (->taille de GetTrim&) GetString& = SendMessageString(Rich2&, WM_GETTEXT, GetTrim + 500, TrimSpace$) Texte$ = TrimSpace$ ' on place le texte récupéré dans la variable Texte$ '------------------------------------- ' vérification de la présence de texte dans la zone de saisie '------------------------------------- Do GetTrim& = SendMessageLong(Rich2&, WM_GETTEXTLENGTH, 0&, 0&) ' on récupère le texte de la zone de saisie TrimSpace$ = Space$(GetTrim) GetString& = SendMessageString(Rich2&, WM_GETTEXT, GetTrim + 500, TrimSpace$) Texte$ = TrimSpace$ DoEvents ' on passe la main au système (pour éviter de bloquer les ressources pendant la boucle) Loop Until Texte$ = "" ' on attend tant que la zone de saisie contient du texte Min = Timer ' on utilise le mot clé Timer pour marquer une courte pause avant d'envoyer le texte Do Until 0.7 <= Timer - Min DoEvents Loop Call SendMessageString(Rich2&, WM_SETTEXT, 0&, Left(Txt$, 232)) ' on positionne les 232 premiers caractères à envoyer dans la zone de saisie Call SendMessageLong(Rich2&, WM_CHAR, VK_RETURN, 0&) ' on simule l'appui de la touche ENTREE If Len(Txt$) > 232 Then Call ChatSend(Right(Txt$, Len(Txt$) - 232)) ' si le texte a envoyer fait plus de 232 caractères on recommence avec la suite du texte End Function
4 juin 2010 à 11:51
26 mars 2008 à 19:50
26 mars 2008 à 19:47
26 mars 2008 à 18:31
y'en 'core des gens des salons waol qui passent ici?
perpette que j'me suis pa co sur aol ou aim
si ya des gens du pdr ou de phuk
ça fré plaiZz d'savoir ske tlm est devenu lol ;)
5 sept. 2005 à 15:09
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.