吕偏执先生 发表于 2013-4-15 19:52:43

向一个激活窗口发送命令

比如qq登录界面 如何发送一个指令让它执行 登录 按钮 我不想用鼠标模拟点击
ControlClick ( "qq2012", "登录", 658084 "left", 1 )
这样写 不可以啊。改如何实现呢 这个问题困扰我2天了

shqf 发表于 2013-4-16 10:18:46

什么意思啊,越来越看不懂论坛的一些提问帖了。没有标点符号,真的令人费解呵。
是“不想用鼠标模拟点击”这个意思吗?可controlclick()就是模拟鼠标点击的一个函数呀。还是不想用controlclick()来模拟点击?因为语句执行不了?语句执行不了,没考虑语句有问题吗?应该去搞懂它啊。基本的一些模拟点击函数不用,去用更高级可能也更复杂更难理解的函数,恐怕难以为继啊。
如是第2层意思,那么看看帮助,或在论坛搜索,再多试试,应该能找到问题的答案。实在不行,再来提问吧。相信那时你的提问,一定会得到更多一些人来给你回答。

1361739590 发表于 2013-4-16 10:28:31

是不是ID会变的

chenronting 发表于 2013-4-16 11:13:22

他这个窗体里控件都找不到几个,你怎么控制,还是安心的用模拟吧,看看有没有高手来解围

mbdnmt 发表于 2013-4-16 23:21:55

QQ界面是非标准控件~   不希望基于鼠标模拟点击是基于什么考虑?设计得好的话也是可以保证可靠性的

32714107 发表于 2013-4-17 15:36:44

试了一下,只会用mouseclick模拟点击操作,静待高手用控件操作。

吕偏执先生 发表于 2013-4-19 08:29:21

想要的效果就是比如:qq登陆界面 如何从后台发送一个登陆的指令 让脚本执行点击“登陆”按钮“ 不想用鼠标的模拟点击来操作 想用后台内存的功能来实现。

shqf 发表于 2013-4-19 10:06:16

本帖最后由 shqf 于 2013-4-19 10:32 编辑

楼上的朋友,“让脚本执行点击‘登陆’按钮”与“不想用鼠标的模拟点击来操作”,两种表述还是有矛盾呵。不过能大概理解你的意思了。你不是想用脚本模拟点击来完成登录,而是想用脚本直接完成QQ登录功能来进行后台登录。但这样就和controlclick()等函数没有关系了,因为controlclick()等是用来模拟鼠标点击的。
这里有个问题,如果是网页登录,如一些网站、论坛类等,要么是GET方式提交,要么是POST方式提交,都因遵循http协议,可以用脚本来发送符合http协议的请求,及接收相应的响应数据,而完成后台的直接登录。如是第三方程序,因无法知道其请求的数据格式,甚至接收请求的服务器IP地址或端口,而无法后台直接登录。只能用模拟鼠标点击“登录”按钮的方法来完成登录。
不过腾讯QQ也有网页界面可以登录,你可以一试后台登录。

吕偏执先生 发表于 2013-4-19 12:01:00

回复 8# shqf
就拿qq登陆界面来说 我想在后台完成直接输入账号密码 并且登陆 这3个操作。登陆的那个操作 au3没办法实现后台么 只能鼠标模拟来操作么?

32714107 发表于 2013-4-19 16:46:35

本帖最后由 32714107 于 2013-4-19 16:47 编辑

不用mouseclick,用tab键也可以做到,但总感觉成功登录的可能性不是太高,而且方法也不好Run("C:\Program Files\Tencent\QQ\QQProtect\Bin\QQProtect.exe")
;WinWait("qq2013") 非标准控件,加这个命令的话就要永远等下去了
Sleep(10000)
Send("{Tab 12}")
Send("qq号")
Sleep(500)
Send("{Tab}")
Send("密码")
Send("{Tab 9}")
Sleep(3000)
Send("{Enter}")。先上代码,望高手指点

CCM 发表于 2013-4-19 16:52:20

如果要模擬動作,個人習慣是每個動作後面都加上sleep
寧可讓每個動作慢點,但也要他確實做到。

32714107 发表于 2013-4-19 16:59:01

用相对坐标方式,WinGetPos获取QQ窗体左上角坐标,然后尝试得出输入框和按钮相对于窗体左上角的位置坐标,两者相加(窗体左上角坐标+控件相对坐标)得到绝对坐标。用ControlSetText填入内容,其中控件ID使用坐标方式。用ControlClick点击登录按钮,同样控件ID使用坐标方式。
从网上找到这种方法,应该也可以的!请楼主试试吧

烟雨 发表于 2013-4-19 22:08:31

本帖最后由 烟雨 于 2013-4-19 22:13 编辑

假如的格式,不一定准
                        ControlSend("", "QQ2013", "", "!u")
                        ControlCommand("", "QQ2013", "", "EditPaste", $TRIAL_username)
                        ControlSend("", "QQ2013", "", "{Tab}")
                        ControlCommand("", "QQ2013", "", "EditPaste", $TRIAL_password)
                        ControlClick("", "QQ2013", "", "left")

魔导 发表于 2013-4-21 17:11:13

使用   按钮的   ID 咯(具体的看下帮助,论坛里找下“神仙作品”这个)
如果不行的话   就可能是老马做了手脚

mikezunya 发表于 2013-4-21 23:23:16

回复 10# 32714107

估计不行
页: [1]
查看完整版本: 向一个激活窗口发送命令