COMMENT Coller du texte dans une zone de texte de la fenêtre active [Résolu]

Messages postés
31
Date d'inscription
lundi 14 mars 2005
Statut
Membre
Dernière intervention
9 novembre 2008
- - Dernière réponse : 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.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
22
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
une source qui pourrais t'aider

http://www.vbfrance.com/code.aspx?ID=34573
Messages postés
31
Date d'inscription
lundi 14 mars 2005
Statut
Membre
Dernière intervention
9 novembre 2008
0
Merci
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