您的位置:程序门 -> vb ->



如何获取一个窗口类名为richedit且标题文本不断变化的句柄?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何获取一个窗口类名为richedit且标题文本不断变化的句柄?[已结贴,结贴人:celestica]
发表于:2007-05-24 07:08:26 楼主
我知道一个form的句柄,但是里面一个richedit控件的“标题文本”(通过spy++查找所得)不断变化,“标题文本”内容是提示输入的几行提示信息,且中间有回车,如何获取其句柄?大家能否给点提示。谢谢
举个例子:

文本内容:

“please   enter   your   id,
回车
回车(两个)
must   be   12   characters:
回车
if   you   have   any   question... "

这个内容是固定的,输入12个字符以后就会变成下个完全不同的提示信息》
发表于:2007-05-24 09:38:311楼 得分:0
补充说明:也就是如何从另一个应用程序编辑框获取文字?
发表于:2007-05-24 09:58:012楼 得分:40
直接用findwindow   findwindowex查找即可,可以指定类名查找
发表于:2007-05-24 12:37:243楼 得分:0
可能我没说清楚,我的本意是想获取:

must   be   12   characters:

输入的12个字符做记录\判断并结合编辑窗口(sendkeys发送相关信息到到编辑窗口)做相应处理,窗口和编辑窗口句柄我是可以获取的,但是里面的文字不知道如何获取,getwindowtext不可以获取另一应用程序的编辑窗口文字,而且我的这个编辑窗口每一行之间还有若干行空行.
发表于:2007-05-24 12:45:234楼 得分:0
用sendmessage发送wm_gettext试试

另外,你的编辑窗口的classname是什么
发表于:2007-05-24 17:00:205楼 得分:0
非常感谢楼上,今天下午太忙,下班前关注一下.

1/窗口类名:richedit

2/标题文本,如上所示是不断变化的:
  “please   enter   your   id,
    回车
    回车(两个)
    must   be   12   characters:
    回车
    if   you   have   any   question... "
3/类样式值:16520
    类样式:
          cs_dblcks
          cs_globalclass
          cs_parentdc

如有必要,请留邮箱,我将相关spy++图片发过去,另外再给追加分.
发表于:2007-05-24 17:19:006楼 得分:0
你先参考一下这个:
http://topic.csdn.net/t/20051119/20/4405082.html
发表于:2007-05-24 19:52:147楼 得分:0
谢谢,我试试看!
发表于:2007-05-25 09:43:598楼 得分:0
你先参考一下这个:
http://topic.csdn.net/t/20051119/20/4405082.html

谢谢楼上的强力关注,所提供的贴子确实不错,不过昨晚刚发现通过鼠标取词的方法对我更简单,楼上的分数绝对不会少给的.

但是现在我发现取得当前窗口(richedit)的句柄比较麻烦,我搞不定,是一个四级的子窗口,其父窗口类名是:static       标题:vbnullstring   ,且句柄hwnd已获得.但是当前窗口(richedit)句柄thwnd没办法获取,不知到大家有什么更好的方法:

昨晚我想过两种思路,但是返回都是零,郁闷中
1/   thwnd=findwindowex(hwnd,&0, "static ",str)           str是richedit标题,标题不断变化,且如上所述,有回车换行.

2/   获取光标当前所在位置的窗口句柄,也就是richedit句柄,可能我不会用,用getcarepos,clienttoscreen,windowfrompoint三个api返回也是零

郁闷中,请高手给予赐教!
发表于:2007-05-25 09:47:129楼 得分:0
用findwindowex的话,必须一层层的查找
发表于:2007-05-25 10:27:3710楼 得分:0
我就是一层层的查找下来的!到最后一层我需要的那层(richedit句柄)卡住了,返回0,
上面的每一层句柄都找到的,而且我调试过了!
发表于:2007-05-25 11:06:3911楼 得分:0
具体程序如下:  
dim   ss   as   string  
ss= "
回车换行
please   enter   your   id,
回车换行  
回车换行
    must   be   12   characters:
回车换行  
    if   you   have   any   question... "

    'ahwnd   =   getforegroundwindow   '   hwnd   is   the   handle   to   the   foreground   window
'   debug.print   dhwnd
     
ahwnd   =   findwindow( "gr_EXECution_class ",   "228x   production   -c:\user\10040.obc   -   runtime   system ")
    debug.print   ahwnd
if   ahwnd> 0   then
    bhwnd   =   findwindowex(ahwnd,   byval   0&,   "#32770 ",   "template   2 ")
    debug.print   bhwnd
end   if
if   bhwnd   then
    chwnd   =   findwindowex(bhwnd,   byval   0&,   "static ",   vbnullstring)
    debug.print   chwnd
end   if
    if   chwnd   <>   0   then
    dhwnd   =   findwindowex(chwnd,   byval   0&,   "richedit ",ss)
    debug.print   dhwnd
end   if

dhwnd   返回0
发表于:2007-05-25 11:15:0812楼 得分:0
由于上面ss字符太多,不好定义,所以不好查找,找过资料了也没好的办法解决.
所以想过用获取光标所在的位置句柄,但是没成功,不知道知道其父窗口句柄chwnd及自身窗口类名 "richedit ",,是否有什么好的api可以获取其窗口句柄dhwnd?


快速检索

最新资讯
热门点击