yufei8051
发表于 2012-11-10 18:10:15
在这个软件中,因为editx之类的会变化,而id1032之类的虽然不变,但对有有控件却不可操作,才这么费事的。
annybaby
发表于 2012-11-10 18:47:22
回复 15# yufei8051
$tmp=ControlFocus('','',$controlid)
MsgBox(0,0,ControlGetFocus(''))
我觉得花那么多时间来提问,自己搜索帮助都可以了
折腾来折腾去~~
lxwlxwayy
发表于 2012-11-10 18:50:09
这也行,高手
yufei8051
发表于 2012-11-10 19:06:10
本帖最后由 yufei8051 于 2012-11-10 19:18 编辑
回复yufei8051
$tmp=ControlFocus('','',$controlid)
MsgBox(0,0,ControlGetFocus(''))
我觉得花那么多时间来提问,自己搜索帮助都可以了
折腾来折腾去~~
annybaby 发表于 2012-11-10 18:47 http://www.autoitx.com/images/common/back.gif
实在感谢!!终于迎解决了!!!!!!
其实这两天一直在搜索,没搜到不是吗,也许是搜索不的法吧
非常感谢啊,终于彻底解决了
annybaby
发表于 2012-11-10 20:02:42
回复 19# yufei8051
用A大的函数询捕 搜索 类别名 前面两个就是你需要的
yufei8051
发表于 2012-11-10 20:39:00
实在感谢!!终于迎解决了!!!!!!
其实这两天一直在搜索,没搜到不是吗,也许是搜索不的法吧
非 ...
yufei8051 发表于 2012-11-10 19:06 http://www.autoitx.com/images/common/back.gif
高兴太早了,关键还是id1032之类有重复,所以用前面的程序找的的也不是都可以操作,要是前面程序直接得到类别名就好了。
yufei8051
发表于 2012-11-10 20:40:13
回复yufei8051
用A大的函数询捕 搜索 类别名 前面两个就是你需要的
annybaby 发表于 2012-11-10 20:02 http://www.autoitx.com/images/common/back.gif
函数询捕,谢谢提示,我找找
yufei8051
发表于 2012-11-10 20:44:01
Func _get_ctr_id_by_zb($zb1, $zb2,$tar_Title)
Local $controlid
$tPoint = DllStructCreate($tagPoi ...
oceanwind 发表于 2012-11-9 22:27 http://www.autoitx.com/images/common/back.gif
请问能否直接得到类别名如editx之类的?id1032之类有重复,还是不行啊
oceanwind
发表于 2012-11-10 22:15:18
请问能否直接得到类别名如editx之类的?id1032之类有重复,还是不行啊
yufei8051 发表于 2012-11-10 20:44 http://www.autoitx.com/images/common/back.gif
没用过其它的了
我平常是用前面所贴的循环取得(for i=1 to 300)
oceanwind
发表于 2012-11-10 22:54:14
最烦这种有TAB页的下单软件
换家期货公司得了..
yufei8051
发表于 2012-11-10 23:02:04
没用过其它的了
我平常是用前面所贴的循环取得(for i=1 to 300)
oceanwind 发表于 2012-11-10 22:15 http://www.autoitx.com/images/common/back.gif
不行啊,for 这种我试了,关键是重复的id太多,光是1032的就有3个,其它也是如此。好几个编辑框的坐标完全相同,用for只能找的最前面的那一个。
yufei8051
发表于 2012-11-10 23:09:47
最烦这种有TAB页的下单软件
换家期货公司得了..
oceanwind 发表于 2012-11-10 22:54 http://www.autoitx.com/images/common/back.gif
谢谢你关注,不行就用鼠标模拟单击指定坐标,再获取焦点处类别名的方法了。
前面你的程序有把窗口坐标转换成屏幕坐标的函数,可是我没看明白怎么用。
比如窗口坐标分别是:x230,y80,怎么用函数把它们转换成屏幕坐标可以麻烦你指点一下吗?最好详细一些,谢谢了先
yufei8051
发表于 2012-11-12 13:36:41
全部功能胜利实现!感谢高手的指点!
依据坐标取到控件句柄;以下代码可以依据坐标取到控件类别名edit
;Local $tar_Title=$wsgpjyxt, $zb1, $zb2
Func _get_ctr_id_by_zb($zb1, $zb2,$tar_Title)
Local $tPoint = DllStructCreate($tagPoint);创建一个 C/C++ 样式的数据结构供 DllCall 使用
DllStructSetData($tPoint, 1, $zb1) ;设置数据结构(struct)中部分元素的数据.
DllStructSetData($tPoint, 2, $zb2)
_WinAPI_ClientToScreen(WinGetHandle($tar_Title), $tpoint);转换客户区窗口指定点的坐标到一个屏幕坐标
$hWnd = _WinAPI_WindowFromPoint($tPoint);检索包含指定点的窗口句柄
;Local $controlid
;$controlid = _WinAPI_GetDlgCtrlID($hWnd);检索指定控件的标识符
;Return $controlid
Return$hWnd
EndFunc逐次判断各个控件:;以下部分检测edit框值
Func GetEditd()
Local $GetEditjs
For $GetEditjs=1 To 5 Step 1
Local $js,$Getjg
$js=$js+1
$Getjg=100
Switch $js
Case 1
;第1个框
$zb1=234
$zb2=88
_get_ctr_id_by_zb($zb1, $zb2,$tar_Title);调用子程序
ControlFocus($tar_Title,"",_get_ctr_id_by_zb($zb1, $zb2,$tar_Title));设置指定控件为当前焦点
$GetdmEdit=ControlGetFocus($tar_Title)
Sleep($Getjg)
Case 2
;第2个框
$zb1=234
$zb2=124
_get_ctr_id_by_zb($zb1, $zb2,$tar_Title);调用子程序
ControlFocus($tar_Title,"",_get_ctr_id_by_zb($zb1, $zb2,$tar_Title));设置指定控件为当前焦点
$GetjgEdit=ControlGetFocus($tar_Title)
Sleep($Getjg)
Case 3
;第3个框
$zb1=234
$zb2=160
_get_ctr_id_by_zb($zb1, $zb2,$tar_Title);调用子程序
ControlFocus($tar_Title,"",_get_ctr_id_by_zb($zb1, $zb2,$tar_Title));设置指定控件为当前焦点
$GetslEdit=ControlGetFocus($tar_Title)
Sleep($Getjg)
Case 4
;股票名称框
$zb1=234
$zb2=106
_get_ctr_id_by_zb($zb1, $zb2,$tar_Title);调用子程序
ControlFocus($tar_Title,"",_get_ctr_id_by_zb($zb1, $zb2,$tar_Title));设置指定控件为当前焦点
$Getgpmc=ControlGetFocus($tar_Title)
Sleep($Getjg)
Case 5
;买入(卖出)按钮
$zb1=258
$zb2=184
_get_ctr_id_by_zb($zb1, $zb2,$tar_Title);调用子程序
ControlFocus($tar_Title,"",_get_ctr_id_by_zb($zb1, $zb2,$tar_Title));设置指定控件为当前焦点
$Getan=ControlGetFocus($tar_Title)
Sleep($Getjg)
EndSwitch
;MsgBox(262149,"测试FOR次数 :"&$js&"zb1: "&$zb1&"zb2: "&$zb2,"代码框:" & $GetdmEdit & ".价格框:" &$GetjgEdit & ".数量框:" & $GetslEdit & @CRLF & @CRLF &"名称框:" & $Getgpmc& ".按钮:" & $Getan,3)
Next
;测试 ,看看5个框各是什么东东
;MsgBox(262149,"测试:","代码框:" & $GetdmEdit & ".价格框:" &$GetjgEdit & ".数量框:" & $GetslEdit & @CRLF & @CRLF &"名称框:" & $Getgpmc& ".按钮:" & $Getan,3)
EndFunc
jtzxgfy
发表于 2012-11-13 20:09:04
yufei8051 您好
$zb1, $zb2,$tar_Title 代表什么? 最好能加入测试显示结果的代码 我们好测试 谢谢!
CHEARV
发表于 2013-4-23 22:14:29
高手如云啊,收藏一下。