找回密码
 加入
搜索
查看: 4353|回复: 10

[AU3基础] [已解决]客户端非常多,手动修改工作量非常大。感谢{xlj310}的帮助

  [复制链接]
发表于 2015-11-29 19:07:50 | 显示全部楼层 |阅读模式
本帖最后由 liushenchi 于 2015-12-2 17:07 编辑

谁能教我替换字符。foxmail7.0我需要修改邮箱后缀。客户端有将近2000.手工修改工作量庞大。
比如:dehua.liu@shentongxm.com  我需要更换成 dehua.liu@shentong.com
我只需要帮我替换字符。
我把邮箱需要替换的位置图片发上来下。如果没办法有完全的代码来。
求帮忙写下如何替换字符。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-11-30 15:16:30 | 显示全部楼层
我觉得你还是写个配置文件,做个自动脚本,每次要改某个用户的时候读取一下配置去修改
 楼主| 发表于 2015-11-30 15:30:24 | 显示全部楼层
这几天才了解这工具,只能拼凑这个。但是我需要替换

@shentongxm.com  换成 @shentong.com  如果已经是替换成@shentong.com就不往下执行。如果没有替换的话。就往下执行代码。


以下我的方法是用tab键却换到要修改的位置。然后用键盘左右键来删除。这样要是有运行过的。在运行一次就会变成是错误的。
Run("D:\Program Files\Foxmail 7.0\Foxmail.exe")
WinWait("Foxmail","工具栏")
Send("!tc")
WinWaitactive("帐号管理","更改(&E)")
ControlClick("帐号管理","更改(&E)","[CLASS:TTntEdit.UnicodeClass]")
Send("{tab},{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
ControlClick("帐号管理","更改(&E)","[CLASS:TTntTabControl.UnicodeClass]")
Send("{Right 3}")
Send("{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
Send("{tab}")
$hWnd=WinGetHandle("[ACTIVE]");$hWnd 为目标窗口句柄,这里设置的是当前活动窗口
$ret=DllCall("user32.dll","long","LoadKeyboardLayout","str","08040804","int",1+0)
DllCall("user32.dll","ptr","SendMessage","hwnd",$hWnd,"int",0x50,"int",1,"int",$ret[0])
Send('nh')
Send("mail.shentong.com")
Send("{tab}")
Send("mail.shentong.com")
Send("{tab}")
Send("mail.shentong.com")
ControlClick("帐号管理","每隔(&C)","[CLASS:TTntTabControl.UnicodeClass]")
Send("{Right 2}")
Send("{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
ControlClick("帐号管理","默认密送给(&B):","[CLASS:TDlg_setup.UnicodeClass21]")
发表于 2015-11-30 15:33:44 | 显示全部楼层
我没有7.0的版本 我网上下载了最新的7.2的  我的建议是直接修改配置文件
发表于 2015-11-30 15:33:48 | 显示全部楼层
我没有7.0的版本 我网上下载了最新的7.2的  我的建议是直接修改配置文件
 楼主| 发表于 2015-11-30 16:48:40 | 显示全部楼层
回复 5# cfanpc

或者你能帮忙看下,怎么获取邮箱后缀和替换?
发表于 2015-11-30 21:12:09 | 显示全部楼层
说实话,看到这个标题我就很反感!催命类
http://www.autoitx.com/thread-10945-1-1.html
发表于 2015-12-1 11:09:00 | 显示全部楼层
本帖最后由 xlj310 于 2015-12-1 11:11 编辑

楼主对Au3还不是很了解,不过你这样去做说明你还是有足够耐心的,我下载了foxmail7.0版本,帮你做了一个现成的脚本,可以直接拿来使用,个中函数你就自己慢慢学习吧。选中函数后直接按F1会跳出对应函数的使用方法。

Run("D:\Program Files\Foxmail 7.0\Foxmail.exe")

;解决Foxmail最小化后不能识别到窗口
WinSetState("Foxmail","",@SW_RESTORE)

WinWait("Foxmail", "")

WinActivate("Foxmail", "")

$title = "帐号管理"
$text = "确定"
If WinExists($title,$text) Then WinClose($title,$text)

;需要模拟发送按键,临时禁用键鼠操作
BlockInput(1)
Do
        Send("!tc")
Until WinExists($title, $text)
;操作完毕,解禁键鼠锁定
BlockInput(0)
;~ WinActivate("帐号管理", "更改(&E)")

$Control = "TTntEdit.UnicodeClass3"
$EmailAddress = ControlGetText($title, $text, $Control)
$EmailAddress = StringReplace($EmailAddress, "shentongxm.com", "shentong.com")
ControlSetText($title, $text, $Control, $EmailAddress)

Do
        ControlClick($title, $text, "TTntTabControl.UnicodeClass1", "", 1, 172, 10)
Until WinExists($title, "发送服务器需要身份验证")

ControlSetText($title, $text, $Control, $EmailAddress)

;下面代码修改密码,为防止误修改,已将下行代码作注释了,如果确实需要,请把前面的注释符去掉
;~ ControlSetText($title, $text, "TTntEdit.UnicodeClass2", "mail.shentong.com");密码框

ControlSetText($title, $text, "TTntEdit.UnicodeClass4", "smtp.shentong.com");发送服务器
ControlSetText($title, $text, "TTntEdit.UnicodeClass1", "pop3.shentong.com");接收服务器

Do
        ControlClick($title, $text, "TTntTabControl.UnicodeClass1", "", 1, 273, 10)
Until WinExists($title, "发送邮件时拆分邮件")
ControlSetText($title, $text, "TTntEdit.UnicodeClass4", $EmailAddress)

;下面代码使修改生效,建议先看一下效果,如果没有问题,可以继续
;~ ControlClick($title,$text,"TTntButton.UnicodeClass15");点击确定按钮

 楼主| 发表于 2015-12-2 16:58:16 | 显示全部楼层
回复 8# xlj310


    非常感谢。这代码非常实用!!!
发表于 2015-12-3 10:02:57 | 显示全部楼层
厉害啊  还是你们专业
发表于 2015-12-4 16:52:15 | 显示全部楼层
foxmail  很好搞定的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 12:35 , Processed in 0.101914 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表