liushenchi 发表于 2015-11-29 19:07:50

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

本帖最后由 liushenchi 于 2015-12-2 17:07 编辑

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

liangxm 发表于 2015-11-30 15:16:30

我觉得你还是写个配置文件,做个自动脚本,每次要改某个用户的时候读取一下配置去修改

liushenchi 发表于 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)","")
Send("{tab},{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
ControlClick("帐号管理","更改(&E)","")
Send("{Right 3}")
Send("{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
Send("{tab}")
$hWnd=WinGetHandle("");$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)
Send('nh')
Send("mail.shentong.com")
Send("{tab}")
Send("mail.shentong.com")
Send("{tab}")
Send("mail.shentong.com")
ControlClick("帐号管理","每隔(&C)","")
Send("{Right 2}")
Send("{tab}")
Send("{Right}")
Send("{LEFT 6}")
Send("{DEL 2}")
ControlClick("帐号管理","默认密送给(&B):","")

cfanpc 发表于 2015-11-30 15:33:44

我没有7.0的版本 我网上下载了最新的7.2的我的建议是直接修改配置文件

cfanpc 发表于 2015-11-30 15:33:48

我没有7.0的版本 我网上下载了最新的7.2的我的建议是直接修改配置文件

liushenchi 发表于 2015-11-30 16:48:40

回复 5# cfanpc

或者你能帮忙看下,怎么获取邮箱后缀和替换?

haijie1223 发表于 2015-11-30 21:12:09

说实话,看到这个标题我就很反感!催命类
http://www.autoitx.com/thread-10945-1-1.html

xlj310 发表于 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");点击确定按钮

liushenchi 发表于 2015-12-2 16:58:16

回复 8# xlj310


    非常感谢。这代码非常实用!!!{:face (411):}

cfanpc 发表于 2015-12-3 10:02:57

厉害啊还是你们专业

xin266 发表于 2015-12-4 16:52:15

foxmail很好搞定的
页: [1]
查看完整版本: [已解决]客户端非常多,手动修改工作量非常大。感谢{xlj310}的帮助