ou pour etre coh�rent avec le reste, ce qui revient au meme, utilise sendmessage avec WM_GETTEXTLENGTH
Version imprimable
ou pour etre coh�rent avec le reste, ce qui revient au meme, utilise sendmessage avec WM_GETTEXTLENGTH
mais apres comment faire pour ne faire la selection qu'au niveau de ce qu'a selectionn� la souris?
il faut que je calcule la position de la souris avant et apres?? :?
et un Edit c'est une zone de texte telle que le notepad par exemple?
et du texte contenu dans une page internet n'est pas consid�r�e comme un Edit non? :(
Dans NotePad, �a doit �tre un RichEdit ...
arffff
il y a pas un controle qui fait tout? :wink: :arrow:
Le CRichEditCtrl permet de g�rer la s�lection de texte et le copier/coller (et bien d'autres choses...)
ah cool, je vais regarder �a de plus pr�s 8)
oui mais non en fait, j'en reviens toujours au meme probleme :wink:
Le probl�me, c'est que WM_GETTEXT ne marche pas sur tous les types de controles.
A mon avis, et j'ai pas encore vraiment �tudi� la question plus en d�tail, il faudrait r�cuperer le type de zone sur laquelle tu double-cliques avec GetWindowLong et GWL_ID, puis suivant le type, appliquer soit ce message, soit un autre (EM_SETSEL par ex pour edit), etc ...
Je crains qu'il n'y ait pas un message "g�n�rique".
oui je pense malheureusement. merci de tes precisions. :wink:
je viens d'avoir une autre id�e :
comme mon but est de recuperer un mot selectionn� par la souris pour l'envoyer dans le presse-papier, ne pourrais-je pas simuler un double-clic gauche pour que le mot soit selectionn�, et ensuite simuler l'appui des touches CTRL+C ??
j'avais cru comprendre que tu n'arrivais pas � simuler le CTRL+C, non ?
ben oui, mais bon... je vais r��ssayer du coup :?
sinon peut etre que passer par le clipboard serait plus simple non??
moi j'�tais parti sur ca, mais du coup, ca complique la r�cup�ration de la zone selectionn�e.
Si tu arrives � simuler le CTRL+C, je pense que c'est plus simple
le probleme est que le CTRL+C agit avant la selection du mot lors du double-clic ou apres??
car dans le premier cas, du coup, ca ne marcherait pas puisque rien ne serait selectionn�.
pour le moment, ce code ne marche pas :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam) { if(wParam==WM_LBUTTONDBLCLK) keybd_event( VK_LCONTROL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 43, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 43, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); keybd_event( VK_LCONTROL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); return CallNextHookEx(VueDonnees.MouseHookHandle,nCode,wParam,lParam); }
meme dans un programme tout bete, je n'arrive pas � simuler le CTRL-C, tu y arrives toi ?
� propos, je pense pas que le 0x45 et le KEYEVENTF_EXTENDEDKEY soit utile
oui mais bon par depit, j'avais essaye :(
je vais essayer dans un programme de test oui.
j'ai essaye ca :
et ca a pour effet de produire en continu la touche C...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 keybd_event( 0x11, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 0x43, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 0x43, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); keybd_event( 0x11, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
donc l' appui sur la touche control ne doit pas etre pris en compte.
ca y est j'ai trouve! ( enfin presque )
la ca me fait bien le copier. le probleme est que comme je ne relache pas les touches, tout mon pc s'est plante apres et il a fallu que je reboot.Code:
1
2
3
4
5
6
7
8
9
10
11
12 LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam) { if(wParam==WM_LBUTTONDBLCLK) keybd_event( 0x11, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 0x43, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 );
donc le probleme se situe au niveau du relachement des touches :wink:
quelqu'un aurait il une id�e pour r�soudre ce probleme? :roll: :wink: