欢迎光临
我们一直在努力

获取指定窗口EDIT、RICHEDIT控件选中的内容-.NET教程,组件控件开发

建站超值云服务器,限时71元/月

{  
    文章名   : 获取指定窗口edit、richedit控件选中的内容
    说明     : 无
    作者     : jjony
    qq       : 254706028
    博客     : http://blog.csdn.net/jzj_jony
    空间     : http://jonychen,ys168.com
    测试环境 : winxpsp2+delphi7
    声明     : 您可以任意转载,但请注明文章作者和出处
}

获取指定窗口edit、richedit控件选中的内容

前两天看到dfw有人问如何获取选中的内容,随便回答了利用系统消息,今天又去看似乎那个人还
未解决,于是把我实现的代码贴出来,以供大家参考,顺便再次强调下windows是个消息的系统,
所以处理系统消息一定要掌握,下面就是实现代码,很简单:

//获取指定窗口edit、richedit控件选中的内容
//实现函数
function getselectedtext(
                         h:thandle;        //edit或richedit的句柄
                         buffer: pchar;    //返回获取的选中文本
                         bufsize: integer  //指定返回的大小
                         ): integer;       //返回实际获取的文本的大小
var
  p: pchar;
  spos,epos:integer;
  slen:integer;
  sl:integer;
begin
  sendmessage(h, em_getsel, longint(@spos), longint(@epos));//获取选中字符串的起始位置
                                                            //和结束位置
  sl := epos-spos;                                          //计算选中字符串长度
  slen:=sendmessage(h,wm_gettextlength, 0, 0);              //获取控件文本整个长度
  p := stralloc(slen + 1);                                  //分配足够内存以存储控件所有文本
  try
    sendmessage(h,wm_gettext,strbufsize(p), longint(p));    //获取控件所有文本
    if sl >= bufsize then sl := bufsize – 1;                //根据自定义buffer的长度获取文本串
                                                            //防止内存溢出
    strlcopy(buffer, p + spos, sl);                         //返回选中的字符串
    result:=sl;                                             //返回实际获取的文本的大小
  finally
    strdispose(p);                                          //释放内存
  end;
end;

//调用实例:获取记事本中当前选中的内容
procedure tform1.button1click(sender: tobject);
var
  h:thandle;
  buf:array[0..max_path] of char;
begin
    h:=findwindow(notepad,nil);
    if h<=0 then exit;
    h:=findwindowex(h,0,edit,nil);
    if h<=0 then exit;
    getselectedtext(h,@buf,sizeof(buf));
    memo1.text:=strpas(@buf);
end;

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 获取指定窗口EDIT、RICHEDIT控件选中的内容-.NET教程,组件控件开发
分享到: 更多 (0)