oommeeggaa3d
Messages postés97Date d'inscriptiondimanche 24 avril 2005StatutMembreDernière intervention 3 septembre 2010
-
20 août 2010 à 08:54
oommeeggaa3d
Messages postés97Date d'inscriptiondimanche 24 avril 2005StatutMembreDernière intervention 3 septembre 2010
-
3 sept. 2010 à 22:30
Bonjour
J'avais développé en VB6, sous XP, une application que je trouve très pratique, me permettant de gérer plusieurs presse-papiers texte (clipboard), et d'appliquer éventuellement des scripts macros sur des zones de texte.
Pour mon travail, cela m'est super pratique et me fait gagner du temps.
Bon venons-en au fait : l'appli compilée fonctionne à 99% sous windows 7.
Ce qui bug : la récupération du texte contenu dans le clipboard.
Le fameux Clipboard.GetFormat(vbCFText) ne renvoie plus rien !
J'ai essayé avec des libs comme Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
et pareil : cela fonctionne sous windows Xp, mais plus du tout sous Win 7
Pourriez-vous m'aider sur ce sujet ?
NB : oui j'ai pensé à réécrire l'outil en .net, mais ca serait vraiment long et fastidieux.
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 21 août 2010 à 11:54
Bonjour,
Je suis sous Seven (mais en VB Net)
La procédure suivante fonctionne bien :
Private Sub coller_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles coller.Click
REM coller
Dim data As IDataObject = Clipboard.GetDataObject()
If data.GetDataPresent(DataFormats.Text) Then
RtBox1.SelectedText = data.GetData(DataFormats.Text)
End If
End Sub
Je ne sais si cela peut t'apporter quelque chose.
A+
oommeeggaa3d
Messages postés97Date d'inscriptiondimanche 24 avril 2005StatutMembreDernière intervention 3 septembre 2010 23 août 2010 à 09:34
Merci de ton aide.
Je ne souhaitais justement pas réécrire l'appli en .net, il y aurait trop à refaire et je n'ai guère le temps ni l'envie. Surtout que tout fonctionne sauf la récupération du clipboard.
L'erreur renvoyée est "impossible d'accèder au clipboard" où un truc dans le genre.
Et même un sendmessage WM_PASTE vers une zone de texte échoue sous win7 alors qu'il fonctionne très bien sous les autres systèmes.
oommeeggaa3d
Messages postés97Date d'inscriptiondimanche 24 avril 2005StatutMembreDernière intervention 3 septembre 2010 25 août 2010 à 09:17
bon j'avance dans mon enquête.
en fait tout fonctionne : gettext, sendmessage, sendkeys, mais sous win7, la gestion du clipboard semble plus pointilleuse, et il ne faut pas que le presse-papier ait été sollicité trop récemment lorsque l'on souhaite récupérer son contenu.
donc le même programme qui fonctionnait sous win xp demande à être revu sous win7.
pour ceux que ca interesse :
dans un module :
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_PASTE = &H302
dans une form, avec trois boutons et trois zones des texte (multiline) :
Private Sub Command1_Click()
Text1.Text = Clipboard.GetText(vbCFText)
End Sub
Private Sub Command2_Click()
Text2.Text = ""
Text2.SetFocus
Call SendKeys("^v", True)
End Sub
Private Sub Command3_Click()
Text3.Text = ""
Call SendMessage(Text3.hWnd, WM_PASTE, 1, 0)
End Sub