=
今天搜索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操作的一些关键知识点: 1. **Excel对象模型**:AutoIt通过COM接口与Microsoft Excel...
在本主题“AutoIt-excel操作”中,我们将深入探讨如何使用AutoIt来操作Microsoft Excel,进行数据处理和自动化任务。 1. **AutoIt安装与环境配置** 在开始使用AutoIt进行Excel操作前,首先需要下载并安装AutoIt的...
excel数据录入,工作之用,有源码,有需要的拿去吧。
AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...
AutoIt是一种流行的自动化脚本语言,特别适用于Windows操作系统上的任务自动化。在IT行业中,它常被用来编写简单到复杂的脚本,以实现自动化的任务执行,例如模拟用户交互、文件操作、窗口管理等。在标题和描述中...
AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程
AutoIt 是一款强大的自动化脚本语言程序,特别适合于Windows操作系统环境下的系统管理和自动化任务。它的设计目标是简化日常的计算机操作,对于那些需要频繁执行相同步骤的用户来说,AutoIt 提供了一种简单易学的...
AutoIT是一种强大的自动化脚本语言,专为简化Windows操作系统中的任务自动化而设计。它以其简单易学的语法和丰富的功能,使得用户无需深入编程知识也能实现各种自动化操作。标题中的"自动化脚本工具"和"脚本录制"是...
AutoIt 是一款强大的自动化脚本语言,主要用于Windows操作系统环境下的任务自动化。这款工具以其简单易学、功能丰富的特性,深受IT专业人士和爱好者的喜爱。在Windows系统中,无论是批量处理文件、控制窗口交互,...
AutoIt是一款强大的自动化脚本语言,特别适合于Windows操作系统下的任务自动化。它的“找图工具”功能是AutoIt的核心特性之一,使得用户可以编写脚本来实现对屏幕上的特定图像或文字进行查找、定位,甚至执行点击...
在数据可视化方面,虽然AutoIt3自身不提供图形化工具,但它可以调用外部应用程序,如Excel或Graphviz,来生成图表和报告。例如,你可以使用`Run()`函数启动Excel,然后通过COM对象(如`WScript.Shell`或`AutoItX`)...
VBA 主要在 Microsoft Office 应用程序中广泛使用,如 Excel 和 Word,而 AutoIT 更倾向于系统级别的自动化和控制。将 VBA 代码转换为 AutoIT 脚本可能是因为 AutoIT 提供了更强大的系统交互能力,或者是为了适应不...
**Autoit电子书籍教程** AutoIt是一款轻量级、易学且功能强大的自动化脚本语言,主要用于Windows操作系统。它提供了一种简单的方式来编写自动化脚本,处理日常的计算机任务,如控制窗口、模拟键盘和鼠标操作,以及...
AutoIt是一种轻量级、强大的脚本语言,主要用于自动化Windows桌面应用程序的任务。它以其简单易学的语法和广泛的功能而受到许多用户的欢迎,无论是新手还是经验丰富的程序员都能快速上手。"AutoIt轻松入门系列"旨在...
- **办公自动化**:批量处理Excel数据、自动填写表单、抓取网页信息等。 - **桌面应用**:开发小型实用工具,如计算器、定时提醒、快捷启动器等。 - **游戏辅助**:自动执行游戏内的重复性操作,例如自动打怪、采集...
AutoIt多线程的标准教程 AutoIt多线程的标准教程
AutoIt3是一款强大的自动化脚本语言,主要用于Windows操作系统上的任务自动化。它以其简单易学、功能丰富的特性,深受初级和高级用户的喜爱。这份"autoit3学习资料"压缩包包含了两个文档,即"autoit3函数用法.doc"和...
【AutoIt教程】AutoIt是一种轻量级的脚本语言,专用于自动化任务,它可以记录用户的操作,并能够重放执行这些操作,实现自动化完成一系列任务。这个教程主要针对初学者,帮助他们快速入门AutoIt。 **一、AutoIt环境...
AutoIt的Script语法类似于VBScript,简单易学。 AutoIt 3是此类软件中影响最大的经典产品。现在能与它一争高低的只有AutoHotkey(为AutoIt成员另立门户之产品,参见AutoIT3 vs AutoHotkey)。 或者是为了...
AutoIT是一种强大的脚本语言,特别适用于自动化Windows桌面应用程序的任务。它被广泛用于系统管理员、程序员和普通用户,以简化日常计算机操作。AutoIT的主要优点是它的易学性、灵活性和与Windows API的深度集成。 ...