COMMENT Coller du texte dans une zone de texte de la fenêtre active

Résolu
cs_maxwells Messages postés 31 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 9 novembre 2008 - 10 nov. 2005 à 09:37
cs_maxwells Messages postés 31 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 9 novembre 2008 - 10 nov. 2005 à 11:23
Salut a tous,

voici mon pb:

Je code une appli qui devrait faire office de super presse-papier.

En effet mon appli enregistre du texte chaque fois que l'on fait CTRL + V dans un contrôle.

J'ai réussi à :

Créer un menu popup où que soit le
focus de l'appli avec les différents trucs que l'on à copier avant
(lorque l'on appuie sur CTRL + W)

Mais maintenant, je ne sais pas faire :

coller le texte sélectionner dans le menu popup dans la fenêtre active

pour y arriver il faudrait détecter l'appli qui à le focus avant de dérouler le menu popup, puis dérouler le menu popup, de copier dans le presse-papier le texte qu'on à sélectionner, puis de redonner le focus à l'appli qui l'avait et enfin de lui envoyer la combinaison de touches CTRL + V (avec SendKeys)



Ce que je ne sais pas faire est en gras et ça m'ennui vraiment si
quelqu'un pourrait m'expliquer clairement comment résoudre à mon
problème ce serait super sympa.



Très bientôt pour simplifier la compréhension de mon problème je distribuerait la source de mon programme.



Merci à tous de votre aide.


[mailto:M@xwells M@xwells] M@ni@c
La vie est injuste et il nous faut l'accepter comme elle nous vient.

3 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
10 nov. 2005 à 10:07
Bonjour,

Si par détecter l'Appli, tu veux dire détecter la Form active, voici un code.



Option Explicit

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal
cch As Long) As Long







Private Sub Command1_Click()

' Fenetre active lors de l'iteration precedente

Static LastActive As Long



' Fenetre active sur le systeme

' Utiliser GetActiveWindow pour connaitre la fenetre active dans l'application)

Dim Active As Long

Active = GetForegroundWindow



' Si c'est la même fenêtre qui est active, on quitte

If LastActive = Active Then Exit Sub



' On récupère la longueur du titre

Dim Length As Long: Length = GetWindowTextLength(Active) + 1



' Afin de pouvoir reserver une chaine de caractères assez grande

Dim Buffer As String: Buffer = Space$(Length)



' On récupère le titre

Length = GetWindowText(Active, Buffer, Length)



' On supprime le caractère \0 final

Buffer = Left$(Buffer, Length)



' On ajoute le titre dans la liste

MsgBox Buffer



' Et on mémorise la fenetre qui etait active

LastActive = Active

End Sub



jpleroisse



Si une réponse vous convient, cliquez réponse Acceptée.
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 nov. 2005 à 10:24
une source qui pourrais t'aider

http://www.vbfrance.com/code.aspx?ID=34573
0
cs_maxwells Messages postés 31 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 9 novembre 2008
10 nov. 2005 à 11:23
Merci beaucoup jpleroisse
je testerai ce soir

MERCI

Vive la communauté Codes Sources !!!!!!!
Question posée clairement --> Réponse claire dans les heures qui suivent
0
Rejoignez-nous