当前位置:编程学习 > VB >>

【分享】一个可以方便快捷操作外部程序窗口的类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...骚年。。干了这碗热翔继续改进吧。。
引用 9 楼 conmajia 的回复:


Windows 7 Ultimate 64-bit测试结果。。
so...骚年。。干了这碗热翔继续改进吧。。


那个“计算完毕……”的标题是改成功的那一部分吧 好啊,我没来错地方! 我也写了一个vb.net的这样的类。。。。。。居然类名字也一样。。。。。
我们俩真有缘。。。。。。。。。。。。。。。。。。。。。补充六个字
高手  请教个问题    如果对 当前包含光标的  输入框 【可能不是 文本框】  进行 多字符 输入? 强大 learning 厉害学习了。
引用 9 楼 conmajia 的回复:


Windows 7 Ultimate 64-bit测试结果。。
so...骚年。。干了这碗热翔继续改进吧。。


引用 9 楼 conmajia 的回复:


Windows 7 Ultimate 64-bit测试结果。。
so...骚年。。干了这碗热翔继续改进吧。。

我的是在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


引用 14 楼 xiaobingking 的回复:
高手  请教个问题    如果对 当前包含光标的  输入框 【可能不是 文本框】  进行 多字符 输入?
这个类只是针对windows标准窗口及控件的。
你说的那可能是模拟的输入框,只能通过模拟键盘发送字符的方式了,像类似qq这样的登陆窗口通常方法都不管用的。 不错,赞一个 该回复于2013-06-14 11:27:18被管理员删除 不错,下了个,谢谢 不错,谢谢 高手 哇 果断来学习了   简单,易懂,学习了
引用 8 楼 conmajia 的回复:
火钳刘翔。。。

从头像来看 咱俩是好 同志。 mark 一下, 刚刚在研究这东东 好复杂,有点说不清楚。 看的不是很明白 效果非常好,找了很久了,顶一个 那个timer。。。 
推荐你用这里面的 http://www.cnblogs.com/pctgl/articles/1540402.html
然后你的 clswindow 可以完全独立运行了,把timer真正的集成到 clswindow中 弱弱的问一下,win7或以上还能用vb吗?
vb.net吧??
引用 40 楼 yangball 的回复:
弱弱的问一下,win7或以上还能用vb吗?
vb.net吧??
win8目前还支持vb6的 感谢楼主的分享哈
引用 39 楼 PctGL 的回复:
那个timer。。。 
推荐你用这里面的 http://www.cnblogs.com/pctgl/articles/1540402.html
然后你的 clswindow 可以完全独立运行了,把timer真正的集成到 clswindow中
谢谢,研究了看看。 哎呦不错奥。 很有用的东西 再推荐一个经典的应用。

我们有时在做一些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被管理员删除
引用 66 楼 Cfffffffffffff 的回复:
selse * from 

好几年前考虑过将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标签


想想这该有多强大多方便啊。相当于把所有元素以及它们的属性当做一个二维表格进行查询了。
引用 62 楼 lzonly 的回复:
这个好棒,结合模拟点击,是不是就能干坏事了
模拟点击也支持的,有ClickPoint方法。例如:
打开记事本后想点击文件菜单可以用下面代码:

window.focus'为了保证能点击到先使得当前窗口为活动窗口
'表示鼠标移动到窗口左顶点右下偏移30像素点击,如果点击不到的话调整大小。
window.ClickPoint window.left+30,window.top+30
该回复于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被管理员删除 不错!不错不错!不错不错!不错不错!不错 积分是大问题啊。。救命
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,