获取鼠标选中文本内容
我想实现一个功能,就是当鼠标在任何窗口(比如explorer, word, notepad, iexplore, wordpad 等等能显示文字的窗口)上选中一些文本时,当双击鼠标右键时我的程序可以取得到鼠标所选中的内容。 这个功能与金山词霸的功能是不一样的,我要获取的是当前选中的文本,而不是鼠标所在的位置的文本,请问该怎么实现?希望大家给点建议或是相关的资料
我用鼠标全局钩子的方式,当响应到WM_RBUTTONCLKDOWN消息时,则在.dll钩子程序中发出WM_COPY的消息, SendMessage(g_hWnd,WM_PASTE,0,0);但是好象没有能实现复制功能。真不知道windows是如何实现复制功能的。在网上还看到有的
使用API函数截获技术,截获ExtTextOut,TextOut 函数。当判断鼠标已经选择了一部分内容后,这时让选中的部分的窗口重画,就可以截获重画内容。 关键的问题:重画时是对整个窗口重画的,我怎样可以在截获函数中取得鼠标选中的内容。可不可以取到哪部分的文本被选中(反选)。 希望高手能够指点一下。先谢谢了。最好能用例子代码的方式解答。前段时间我也问过一个类似的问题但没有好的解答,希望这次我能表述清楚问题,能解决。
我想实现一个功能,就是当鼠标在任何窗口(比如explorer, word, notepad, iexplore, wordpad 等等能显示文字的窗口)上选中一些文本时,当双击鼠标右键时我的程序可以取得到鼠标所选中的内容。 这个功能与金山词霸的功能是不一样的,我要获取的是当前选中的文本,而不是鼠标所在的位置的文本,请问该怎么实现?希望大家给点建议或是相关的资料
我用鼠标全局钩子的方式,当响应到WM_RBUTTONCLKDOWN消息时,则在.dll钩子程序中发出WM_COPY的消息, SendMessage(g_hWnd,WM_PASTE,0,0);但是好象没有能实现复制功能。真不知道windows是如何实现复制功能的。在网上还看到有的
使用API函数截获技术,截获ExtTextOut,TextOut 函数。当判断鼠标已经选择了一部分内容后,这时让选中的部分的窗口重画,就可以截获重画内容。 关键的问题:重画时是对整个窗口重画的,我怎样可以在截获函数中取得鼠标选中的内容。可不可以取到哪部分的文本被选中(反选)。 希望高手能够指点一下。先谢谢了。最好能用例子代码的方式解答。前段时间我也问过一个类似的问题但没有好的解答,希望这次我能表述清楚问题,能解决。
解决方案 »
- 怎么计算连接多个正方形构成的多边形?
- 界面启动最大化并禁用拖动界面
- WSAStartup问题
- AlphaBlend的小问题
- 如何实现在一个窗口(Dialog)里面嵌入另外一个窗口(Dialog),使其成为一个整体。
- 求问:关于文件的序列化。
- 高手请指点:如何判断send函数send的数据被目标机器接收到呢?
- 为什么我用SHGetFileInfo来获取图标,但不能把他显示在ListCtrl中呢??谁知道,或者有源代码??
- ADO问题,编译时很多enum重复定义?
- 如何在vc里面显示万分号
- 如何将内存中字符串形式的XML文件赋给TiXmlDocument?
- 这几种内存释放方式,正确与否,能不能完全释放内存?
如果是直接用的EDIT控件就简单
如果是自绘的文字,你最多取得文字内容,但是无法判断其是否选中。
这个功能不是Windows实现的,而是各个软件自己实现的,只不过按照惯例选用了Ctrl+C作为复制的热键而已。
if( 'A' == pMsg->wParam )
{
//全选
pCommandLine->SetSel( 0, -1 );
}
else if( 'C' == pMsg->wParam )
{
pCommandLine->Copy();
}
else if( 'X' == pMsg->wParam )
{
pCommandLine->Cut();
}
else if( 'V' == pMsg->wParam )
{
pCommandLine->Paste();
}
else if( 'Z' == pMsg->wParam )
{
pCommandLine->Undo();
}
else
{
return pCommandLine->PreTranslateMessage( pMsg );
}
return TRUE;
if( 'A' == pMsg->wParam )
{
//全选
pCommandLine->SetSel( 0, -1 );
}
else if( 'C' == pMsg->wParam )
{
pCommandLine->Copy();
}
else if( 'X' == pMsg->wParam )
{
pCommandLine->Cut();
}
else if( 'V' == pMsg->wParam )
{
pCommandLine->Paste();
}
else if( 'Z' == pMsg->wParam )
{
pCommandLine->Undo();
}
else
{
return pCommandLine->PreTranslateMessage( pMsg );
}
return TRUE;
先获取最前端窗口的句柄,然后调用SendMessage(hWnd,WM_COPY,0,0);函数。
但是发现内容根本没有被复制到。