Coller texte dans nimporte quelle application

Le
Anonyme
Bonjour,

Je souhaite coller le contenu du presse papier dans nimporte quelle
application. Par exemple, je suis sous word ou ie, j'appelle mon
application par un raccourci clavier et j'aimerai que le contenu du
presse papier se colle dans l'application active.

Pour coller il faudrait un équivalent c# de
Screen.ActiveControl = Clipboard.GetText()

Un autre probleme, l'application utilisée passe en arrière plan quand
je lance mon programme. J'ai trouvé quelque chose, mais toujours en
vb. En gros ca donne

hWnd_Target = GetForegroundWindow
Calling_Pid = GetWindowThreadProcessId(hWnd_Target, 0)
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), True

SendMessage GetFocus, WM_PASTE, 0, ByVal 0&
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), False

Merci pour votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Michel Berthier
Le #12202041
Bonjour,
C'est assez flou comme question. Par définition, le presse-papier sert
à
transférer des données entre applications, et un simple Ctrl+C /
Ctrl+V fait
le boulot, pas besoin de programme pour cela.
Si votre intention est de coller le contenu du presse-papier dans une
application qui ne le gère pas, ce ne sera pas possible. Pour que 2
applis
puissent communiquer, il faut que les deux soient d'accord et
implémentent
un mécanisme permettant le dialogue.


"Anonyme a écrit
dans le message de news:

Bonjour,

Je souhaite coller le contenu du presse papier dans nimporte quelle
application. Par exemple, je suis sous word ou ie, j'appelle mon
application par un raccourci clavier et j'aimerai que le contenu du
presse papier se colle dans l'application active.

Pour coller il faudrait un équivalent c# de
Screen.ActiveControl = Clipboard.GetText()

Un autre probleme, l'application utilisée passe en arrière plan
quand
je lance mon programme. J'ai trouvé quelque chose, mais toujours en
vb. En gros ca donne

hWnd_Target = GetForegroundWindow
Calling_Pid = GetWindowThreadProcessId(hWnd_Target, 0)
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), True

SendMessage GetFocus, WM_PASTE, 0, ByVal 0&
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), False

Merci pour votre aide
Gloops
Le #12202011
Bonjour,

Je ne sais pas si il y a une réponse spécifique à .Net
J'ai fait ça avec VB6, l'astuce consiste à ouvrir l'application
non sur
un formulaire mais sur une fonction Main d'un module : comme
l'application s'ouvre sans fenêtre, la fenêtre active reste celle
qui
était active avant appel de l'application. De cette manière, si
l'application simule les touches Ctrl C, cela envoie ces touches sur la
fenêtre qui était active, ce qui donc dans la majorité des
cas envoie la
sélection dans le presse-papiers. Je parle de simulation de touches pour
simplifier, mais on peut aussi chercher à faire plus propre par les API.

Ensuite, la fonction Main peut très bien ouvrir un formulaire, qui lui
pourra facilement aller récupérer le contenu du presse-papiers.

Sous .Net je n'ai pas encore joué à ça, et je ne le ferai
pas d'ici deux
semaines, pour cause de machine en révision.

N.B. : si on procède par simulation de touches, attention à la
combinaison de touches qui va déclencher le raccourci lançant le
programme. Par exemple si il y a la touche Majuscule dedans, au moment
où l'application va vouloir lancer Ctrl C, la touche Majuscule
étant
encore enfoncée, cela sera interprété Ctrl Maj C, et ne
provoquera pas
la copie dans le presse-papiers. Il y a donc lieu dans ce cas d'inviter
l'utilisateur à se servir des touches rémanentes, ce qui lui donne
le
temps de relâcher Maj avant d'appuyer sur C. Ou alors on introduit une
petite temporisation avant la simulation de touches.
____________________________________________
Anonyme a écrit, le 11/03/2007 11:49 :
Bonjour,

Je souhaite coller le contenu du presse papier dans nimporte quelle
application. Par exemple, je suis sous word ou ie, j'appelle mon
application par un raccourci clavier et j'aimerai que le contenu du
presse papier se colle dans l'application active.

Pour coller il faudrait un équivalent c# de
Screen.ActiveControl = Clipboard.GetText()

Un autre probleme, l'application utilisée passe en arrière plan
quand
je lance mon programme. J'ai trouvé quelque chose, mais toujours en
vb. En gros ca donne

hWnd_Target = GetForegroundWindow
Calling_Pid = GetWindowThreadProcessId(hWnd_Target, 0)
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), True

SendMessage GetFocus, WM_PASTE, 0, ByVal 0&
AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target,
0), False

Merci pour votre aide




Publicité
Poster une réponse
Anonyme