=
今天搜索autoit的一些内容,发现一篇文章不错。
摘录下来。
=
from:
http://blog.sina.com.cn/s/blog_c12a8d4b0102xkmr.html
http://blog.sina.com.cn/s/blog_6e6c458d0100ndwn.html
[转载]autoit连通文华财经与excel (2018-04-19 01:37:03)
autoit连通文华财经与excel
101122
autoit可以抓控件内的文本信息,但是文华财经大量非标准控件,信息抓取不了(比如图标标题栏的指标数值等信息)
之前用模拟键鼠操作另一个应用程序Text Catch来从指定位置抓取文本信息,然后存到文本文件,再运行excel文件,模拟键鼠操作导入文件
昨天又看了autoit帮助以及一些国外论坛,发现有更简洁高效的方法来用autoit实现连通文华财经与excel。
autoit可以调用其他软件的dll文件来直接实现功能,而不需要用模拟键鼠操作这个程序。先安装Aqua Deskperience(一个抓文本的程序),它会注册一个dll,TCaptureX,autoit里拿来用就好了。下面的代码就是取了我的文华财经里的一个图标窗口的标题栏,其中有显示反手裕量。信息在字符串$resx中,再通过一点字符串处理代码就能把反手裕量取到。
AutoItSetOption ( "WinTitleMatchMode", 2)
$Title = WinGetTitle( "文华财经 - Mytrader交易信息系统")
$hwnd = Dec(StringTrimLeft(WinGetHandle($Title), 2))
$oShellx = ObjCreate("TCaptureX.TextCaptureX")
$resx = $oShellx.GetTextFromRect($hwnd, 519, 73, 850, 100)
MsgBox(0, $hwnd, $resx)
然后呢,我也不需要再运行excel文件模拟键鼠操作录入数据,可以用命令直接控制excel行为。autoit装好后有个文件Excel.au3,用
#include <Excel.au3>
加载后可以使用一系列命令,比如下面的代码先打开文件,然后在“权益”表上增加一行当天的数据
$sFilePath1 = "c:aa.xlsx"
$oExcel = _ExcelBookOpen($sFilePath1)
_ExcelSheetActivate($oExcel, "权益")
$val = _ExcelReadCell($oExcel, 1,1) ;cell(1,1)用公式取最后一行的行号
_ExcelWriteCell($oExcel, $val+1, $val+1, 1)
_ExcelWriteCell($oExcel, _NowDate(), $val+1, 2)
_ExcelWriteCell($oExcel, $dtqy, $val+1, 3)
_ExcelWriteCell($oExcel, $dtky, $val+1, 4)
这样的连通过程里没有用到键盘鼠标操作,程序速度和稳定性会高很多。
上面的直接抓取非标准控件内的文本信息,我暂时只是用来取一些信息完成盘后记录,其实再加一点代码就可以自动交易了,比如文华财经里编一个指标确定买卖方向,买就在图上写个“B”,卖就写个“S",然后autoit定时取这个信息,取到后和目前持仓方向(从交易软件里获取信息)做比较,如果不一致就控制交易软件反手。
101214:
自用的两个盘后记录程序(用在2010年12月开始的新的期货组合和记录表格)。(不多解释,如果你用得到,可以看看)
#############################
盘后1.au3
#Include <Array.au3>
#include <Date.au3>
#include <Excel.au3>
AutoItSetOption ( "WinTitleMatchMode", 2)
If(Not WinExists ( "IB Trader Workstation")) Then
MouseClick("left",116,752,1)
WinWait("登录")
Send("帐号")
Send("{tab}")
send("密码")
send("{enter}")
winwait("IB Trader Workstation")
sleep(5000)
EndIf
$sFilePath1 = "c:ib.xls"
$oExcel = _ExcelBookOpen($sFilePath1)
_ExcelSheetActivate($oExcel, "sheet8")
###################################
#Include <Array.au3>
#include <Date.au3>
#include <Excel.au3>
Dim $avArray[14]
Dim $avArray2[14]
Dim $avArray3[14]
Dim $avArray4[14]
Dim $avArray5[14]
Dim $xa
Dim $xl
AutoItSetOption ( "WinTitleMatchMode", 2)
If(Not WinExists ( "文华财经 - Mytrader交易信息系统")) Then
while(1)
Run("D:上海中期Mytrader交易信息系统mytrader2009.exe")
WinWait ( "登录上海中期服务器")
WinActivate( "登录上海中期服务器")
Send ( "{ENTER}" )
WinWaitClose ("登录上海中期服务器")
sleep(3000)
if WinExists ( "消息") Then
WinClose ( "消息")
EndIf
sleep(3000)
if WinExists ( "系统通知") Then
WinClose( "系统通知")
EndIf
sleep(1000)
If WinActive ( "文华财经 - Mytrader交易信息系统") Then ExitLoop
ProcessClose("mytrader2009.exe")
ProcessWaitClose("mytrader2009.exe")
WEnd
EndIf
WinActivate( "文华财经 - Mytrader交易信息系统")
$i=0
$str="rbzncutal9rum9a9y9p9s9cfdx59"
$Title = WinGetTitle( "文华财经 - Mytrader交易信息系统")
$hwnd = Dec(StringTrimLeft(WinGetHandle($Title), 2))
$oShellx = ObjCreate("TCaptureX.TextCaptureX")
while(1)
WinActivate( "文华财经 - Mytrader交易信息系统")
ControlFocus ( "文华财经 - Mytrader交易信息系统", "", 32873)
ControlSend ( "文华财经 - Mytrader交易信息系统", "", 32873,"nj")
Send ( "{enter}")
sleep(1000)
$resx = $oShellx.GetTextFromRect($hwnd, 450, 73, 850, 100)
$poshl=StringInStr ( $resx, "cc" )+5
$hl=Number(StringMid ( $resx,$poshl,6))
If $hl>0 Then ExitLoop
WEnd
Do
while(1)
$pingzhong=StringMid ( $str, $i*2+1,2)
WinActivate( "文华财经 - Mytrader交易信息系统")
ControlFocus ( "文华财经 - Mytrader交易信息系统", "", 32873)
ControlSend ( "文华财经 - Mytrader交易信息系统", "", 32873,$pingzhong)
Send ( "{enter}")
sleep(1000)
$resx = $oShellx.GetTextFromRect($hwnd, 450, 73, 850, 100)
$pos=StringInStr ( $resx, "zz" )+5
$pos2=StringInStr ( $resx, "ZHMT" )+5
$pos3=StringInStr ( $resx, "cc" )+5
$avArray[$i]=Number(StringMid ($resx,$pos,6))
$avArray2[$i]=Number(StringMid ( $resx,$pos2,4))
$avArray3[$i]=Number(StringMid ( $resx,$pos3,6))
If $avArray3[$i]>0 And abs($avArray[$i])>0 Then ExitLoop
WEnd
$i=$i+1
Until $i = 14
WinActivate( "文华财经 - Mytrader交易信息系统")
If(Not WinExists ( "帐号")) Then
ControlClick ( "文华财经 - Mytrader交易信息系统","", 2089)
ControlFocus ( "客户登录", "", 1966)
Send("帐号")
sleep(500)
ControlFocus ( "客户登录", "", 1967)
Send("密码")
sleep(500)
ControlCommand ( "客户登录", "", 1968, "SetCurrentSelection", 10 )
ControlClick ("客户登录", "",1970)
WinWait ( "帐号")
while(1)
$zzzzz=ControlListView ( "帐号", "", 2411, "GetText",0,3 )
$msgb1=WinGetTitle ( "帐号")
$msgb2=StringInStr ( $msgb1, "," )
If $zzzzz>0 and $msgb2>0 Then ExitLoop
WEnd
$msgb4=StringInStr ( $msgb1, "," ,1)
$msgb5=StringInStr ( $msgb1, "资金")
$dtqy=StringMid( $msgb1, $msgb2-2,2) & StringMid( $msgb1, $msgb2+1,$msgb4-($msgb2+1))
$dtky=number(stringMid( $msgb1, $msgb5+3,2)) & StringMid( $msgb1, $msgb5+5,5)
EndIf
$str2="rb1zn1cu1ta1l11ru1m11a11y11p11sr1cf1dx1511"
$j=0
Do
$aa=ControlListView ( "帐号", "", 2411, "GetText",$j,0 )
$bb=StringInStr ( $aa, "1" )
$cc=StringMid( $aa, 1,$bb)
If $bb>0 Then
If $cc="a1" Then
$avArray4[7]=ControlListView ( "11800425", "",2411, "GetText", $j,1 )
$avArray5[7]=ControlListView ( "11800425", "",2411, "GetText", $j,3 )
Else
$dd=(StringInStr ( $str2,$cc )+2)/3-1
$avArray4[$dd]=ControlListView ( "11800425", "",2411, "GetText", $j,1 )
$avArray5[$dd]=ControlListView ( "11800425", "",2411, "GetText", $j,3 )
EndIf
EndIf
$j=$j+1
Until $j = 14
WinClose ( "帐号")
WinActivate( "文华财经 - Mytrader交易信息系统")
;If(Not WinExists ( "帐号2")) Then
;MouseClick("right",840,726,1)
;MouseClick("left",863,734,1)
;ControlClick ("提示", "",6)
;sleep(500)
;MouseClick("left",840,726,1)
;ControlFocus ( "客户登录", "", 1966)
;Send("帐号2")
;ControlFocus ( "客户登录", "", 1967)
;Send("密码2")
;ControlClick ("客户登录", "",1970)
;WinWait ( "帐号2")
;while(1)
;$zzzzz=ControlListView ( "帐号2", "", 2411, "GetText",0,3 )
;sleep(10000)
;$msgb1x=WinGetTitle ( "帐号2")
;$msgb2x=StringInStr ( $msgb1x, "," )
;If $zzzzz>0 And $msgb2x>0 Then ExitLoop
;WEnd
;$msgb4x=StringInStr ( $msgb1x, "," ,1)
;$msgb5x=StringInStr ( $msgb1x, "资金")
;$dtqyx=number(StringMid( $msgb1x, $msgb2x-2,2)) & StringMid( $msgb1x, $msgb2x+1,$msgb4x-($msgb2x+1))
;$dtkyx=number(stringMid( $msgb1x, $msgb5x+3,2)) & StringMid( $msgb1x, $msgb5x+5,5)
;EndIf
$dtqyx=100
$dtkyx=100
$file = FileOpen ( "c:ibmg.txt", 0)
$line1 = FileReadLine($file,1)
$line2 = FileReadLine($file,2)
FileClose($file)
$sFilePath1 = "c:aa.xlsm"
$oExcel = _ExcelBookOpen($sFilePath1)
_ExcelSheetActivate($oExcel, "当日信息")
_ExcelWriteArray($oExcel, 2,6,$avArray3, 1)
_ExcelWriteArray($oExcel, 2, 2,$avArray2, 1)
_ExcelWriteArray($oExcel, 2, 5,$avArray, 1)
_ExcelWriteArray($oExcel, 2, 3,$avArray4, 1)
_ExcelWriteArray($oExcel, 2, 4,$avArray5, 1)
_ExcelWriteCell($oExcel, $dtqy, 19, 2)
_ExcelWriteCell($oExcel, $dtky, 20, 2)
_ExcelWriteCell($oExcel, $dtqyx, 19, 3)
_ExcelWriteCell($oExcel, $dtkyx, 20, 3)
_ExcelWriteCell($oExcel, $line1, 19, 4)
_ExcelWriteCell($oExcel, $line2, 20, 4)
_ExcelWriteCell($oExcel, $hl, 28, 2)
=
=
=
相关推荐
autoit关于excel的操作
excel数据录入,工作之用,有源码,有需要的拿去吧。
autoit-excel操作
AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...
AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程
autoit控制chrome的扩展库,正式拜托麻烦的IE
AutoIT
autoit轻松入门系列 autoit轻松入门系列
Autoit的中文帮助手册,AutoIt v3 是一个类似 BASIC 脚本语言的免费软件, 设计用于在 Windows GUI(图形用户界面) 中进行自动化操作. 利用模拟键盘按键, 鼠标移动和窗口/控件的操作实现自动化任务. 而这是其它语言不...
autoit 的安装文档
AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序 的免费软件,它被设计用来在Windows GUI(用户界面)中进行 自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/ 控件操作等来实现自动化任务,而这是...
autoit 解决二维数组动态赋值
autoit3常用的函数,方便查找,需要的可以下在
autoit 读取xml代码
AutoIt的Script语法类似于VBScript,简单易学。 AutoIt v3是用以编写并生成具有BASIC语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动...
AutoIt多线程的标准教程 AutoIt多线程的标准教程
autoit调试技巧
autoit chrome自动填写表单的插件 1.关于AutoIt 下载 https://www.autoitscript.com/site/autoit/ 相关资料 Language Reference https://www.autoitscript.com/autoit3/docs/ 中文资料 ...
Autoit找图、找文字工具,可以在指定的程序界面中找出指定图像、文字位置,并单击和双击。
autoit3 帮助文档 中文 autoit3入门与提高