【分享】一个可以方便快捷操作外部程序窗口的类clsWindow
本帖最后由 bcrun 于 2013-06-17 11:32:58 编辑 开始以为是仿写了MFC的CWnd好样的,归纳需求,整理,总结,提高。 该回复于2013-06-14 08:54:38被管理员删除 该回复于2013-06-14 08:31:08被管理员删除 虽然不搞VB,还是值得顶一下。 火钳刘翔。。。
Windows 7 Ultimate 64-bit测试结果。。
so...易做图年。。干了这碗热翔继续改进吧。。
那个“计算完毕……”的标题是改成功的那一部分吧 好啊,我没来错地方! 我也写了一个vb.net的这样的类。。。。。。居然类名字也一样。。。。。
我们俩真有缘。。。。。。。。。。。。。。。。。。。。。补充六个字
高手 请教个问题 如果对 当前包含光标的 输入框 【可能不是 文本框】 进行 多字符 输入? 强大 learning 厉害学习了。
我的是在xp环境下测试的。出现上述问题,可能是win7下类名不一样吧,或者就是部分api函数使用方法发生了变化。可不可以设置成调试模式,然后把生成的controls.txt 文件内容贴上来??
Private Sub Command5_Click()
Dim window As New clsWindow
Shell "calc.exe", 1
window.DebugMe = True '麻烦加上这行在运行,会在旁边生成个controls.txt
If window.GetWindowHwndByTitleEx("计算器") Then
window.ClickElementByText "2"
window.ClickElementByText "+"
window.ClickElementByText "3"
window.ClickElementByText "="
window.Caption = "计算完毕,点击确定后退出"
MsgBox window.GetElementTextByClassName("Edit"), vbInformation, "计算2+3"
window.CloseWindow
End If
End Sub
这个类只是针对windows标准窗口及控件的。
你说的那可能是模拟的输入框,只能通过模拟键盘发送字符的方式了,像类似qq这样的登陆窗口通常方法都不管用的。 不错,赞一个 该回复于2013-06-14 11:27:18被管理员删除 不错,下了个,谢谢 不错,谢谢 高手 哇 果断来学习了 简单,易懂,学习了
从头像来看 咱俩是好 同志。 mark 一下, 刚刚在研究这东东 好复杂,有点说不清楚。 看的不是很明白 效果非常好,找了很久了,顶一个 那个timer。。。
推荐你用这里面的 http://www.cnblogs.com/pctgl/articles/1540402.html
然后你的 clswindow 可以完全独立运行了,把timer真正的集成到 clswindow中 弱弱的问一下,win7或以上还能用vb吗?
vb.net吧?? win8目前还支持vb6的 感谢楼主的分享哈 谢谢,研究了看看。 哎呦不错奥。 很有用的东西 再推荐一个经典的应用。
我们有时在做一些web自动化操作的时候涉及到上传附件或者图片。有两个方法:
1.后台发送数据,通过post二进制数据过去,这个方式比较复杂。
2.模拟人工自动操作。这个方式也就是点击“选择文件”,然后在对话框里选择文件,点击打开,最后上传。这样就可以通过我们的clsWindow来完成,很简单,就三步:
window.getWindowHwndByTitle "打开"'获得打开对话框
window.setElementTextByClassName "Edit", "C:\p3.sh"'设置文件全路径
window.ClickElementByText "打开(&O)"'点击打开按钮
具体参考:
http://bbs.csdn.net/topics/390435884 该回复于2013-06-17 13:12:17被管理员删除 好样的,归纳需求,整理,总结,提高。 该回复于2013-06-17 13:48:12被管理员删除 可以让您脱身于一堆api函数 该回复于2013-06-17 13:48:46被管理员删除 window.ClickElementByText "2"
window.ClickElementByText "+"
window.ClickElementByText "3"
window.ClickElementByText "="
发现win7上calc的button.text='' max min hide normal 可以改写进show方法,用参数代替窗口状态
cls.show(normal)
cls.show(hide)
cls.show(max)
cls.show(min) 该回复于2013-06-15 11:27:37被管理员删除 这个好棒,结合模拟点击,是不是就能干坏事了 该回复于2013-06-17 13:39:45被管理员删除 呵呵,不错,谢谢分享 selse * from 好的 谢 !! 该回复于2013-06-17 13:52:13被管理员删除 太帅了 楼主 该回复于2013-06-15 16:51:17被管理员删除
好几年前考虑过将dom结构改造用sql语句查询定位元素,一直没去真正做。
select * from tags where name='username' and style='width:50px' and type='submit'
select * from tags where tagname='forms' and action="register.asp"
select * from tags where tagname='a' --等价于document.getElementsByTagName("A") 和 document.links
select * from tags where tagname='p' where innerhtml exists '测试块'--得到内容包含“测试二字”的p标签
想想这该有多强大多方便啊。相当于把所有元素以及它们的属性当做一个二维表格进行查询了。 模拟点击也支持的,有ClickPoint方法。例如:
打开记事本后想点击文件菜单可以用下面代码:
该回复于2013-06-16 09:23:07被管理员删除 要好好消化下才行 很好 很不错 很强大 感谢分享。, 呵呵.不错很棒的车西 该回复于2013-06-16 09:37:44被管理员删除 该回复于2013-06-16 09:42:17被管理员删除 好啊,我没来错地方! 好啊,我没来错地方 学习中,多多指教! 经典 教程 谢谢分享 呵呵.不错很棒的车西呵呵.不错很棒的车西 厉害 厉害 ok,good! 我就是非常喜欢这个编程 感谢分享啊楼主 该回复于2013-06-16 11:05:30被管理员删除 该回复于2013-06-16 11:05:30被管理员删除 不错!不错不错!不错不错!不错不错!不错 积分是大问题啊。。救命
window.focus'为了保证能点击到先使得当前窗口为活动窗口
'表示鼠标移动到窗口左顶点右下偏移30像素点击,如果点击不到的话调整大小。
window.ClickPoint window.left+30,window.top+30
补充:VB , API