`
fantaxy025025
  • 浏览: 1311279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

[转载]autoit连通excel

 
阅读更多

=

今天搜索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(一个抓文本的程序),它会注册一个dllTCaptureXautoit里拿来用就好了。下面的代码就是取了我的文华财经里的一个图标窗口的标题栏,其中有显示反手裕量。信息在字符串$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的操作

    在AutoIt中,处理Excel文件是一项常见的任务,这通常涉及到读取、写入、修改或创建新的Excel工作簿。以下是关于AutoIt进行Excel操作的一些关键知识点: 1. **Excel对象模型**:AutoIt通过COM接口与Microsoft Excel...

    autoit-excel操作

    在本主题“AutoIt-excel操作”中,我们将深入探讨如何使用AutoIt来操作Microsoft Excel,进行数据处理和自动化任务。 1. **AutoIt安装与环境配置** 在开始使用AutoIt进行Excel操作前,首先需要下载并安装AutoIt的...

    Autoit V3 Excel录入工具(附源码)

    excel数据录入,工作之用,有源码,有需要的拿去吧。

    scite4autoit3 AutoIT

    AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...

    Chrome_autoit操作chrome_autoit3chrome_autoit_autoitchrome_chrome_源

    AutoIt是一种流行的自动化脚本语言,特别适用于Windows操作系统上的任务自动化。在IT行业中,它常被用来编写简单到复杂的脚本,以实现自动化的任务执行,例如模拟用户交互、文件操作、窗口管理等。在标题和描述中...

    AutoIt(电子书) AutoIt(电子书)

    AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程 AutoIt教程

    autoit-v3-setup autoit-v3-setup

    AutoIt 是一款强大的自动化脚本语言程序,特别适合于Windows操作系统环境下的系统管理和自动化任务。它的设计目标是简化日常的计算机操作,对于那些需要频繁执行相同步骤的用户来说,AutoIt 提供了一种简单易学的...

    AutoIT自动化脚本工具与脚本录制

    AutoIT是一种强大的自动化脚本语言,专为简化Windows操作系统中的任务自动化而设计。它以其简单易学的语法和丰富的功能,使得用户无需深入编程知识也能实现各种自动化操作。标题中的"自动化脚本工具"和"脚本录制"是...

    autoIt autoit autoit

    AutoIt 是一款强大的自动化脚本语言,主要用于Windows操作系统环境下的任务自动化。这款工具以其简单易学、功能丰富的特性,深受IT专业人士和爱好者的喜爱。在Windows系统中,无论是批量处理文件、控制窗口交互,...

    Autoit找图工具

    AutoIt是一款强大的自动化脚本语言,特别适合于Windows操作系统下的任务自动化。它的“找图工具”功能是AutoIt的核心特性之一,使得用户可以编写脚本来实现对屏幕上的特定图像或文字进行查找、定位,甚至执行点击...

    autoit3 信息管理例子

    在数据可视化方面,虽然AutoIt3自身不提供图形化工具,但它可以调用外部应用程序,如Excel或Graphviz,来生成图表和报告。例如,你可以使用`Run()`函数启动Excel,然后通过COM对象(如`WScript.Shell`或`AutoItX`)...

    VBA Convert to AutoIT

    VBA 主要在 Microsoft Office 应用程序中广泛使用,如 Excel 和 Word,而 AutoIT 更倾向于系统级别的自动化和控制。将 VBA 代码转换为 AutoIT 脚本可能是因为 AutoIT 提供了更强大的系统交互能力,或者是为了适应不...

    Autoit电子书籍教程

    **Autoit电子书籍教程** AutoIt是一款轻量级、易学且功能强大的自动化脚本语言,主要用于Windows操作系统。它提供了一种简单的方式来编写自动化脚本,处理日常的计算机任务,如控制窗口、模拟键盘和鼠标操作,以及...

    autoit轻松入门系列

    AutoIt是一种轻量级、强大的脚本语言,主要用于自动化Windows桌面应用程序的任务。它以其简单易学的语法和广泛的功能而受到许多用户的欢迎,无论是新手还是经验丰富的程序员都能快速上手。"AutoIt轻松入门系列"旨在...

    AUTOIT_3.0下载

    - **办公自动化**:批量处理Excel数据、自动填写表单、抓取网页信息等。 - **桌面应用**:开发小型实用工具,如计算器、定时提醒、快捷启动器等。 - **游戏辅助**:自动执行游戏内的重复性操作,例如自动打怪、采集...

    autoit3学习资料

    AutoIt3是一款强大的自动化脚本语言,主要用于Windows操作系统上的任务自动化。它以其简单易学、功能丰富的特性,深受初级和高级用户的喜爱。这份"autoit3学习资料"压缩包包含了两个文档,即"autoit3函数用法.doc"和...

    AUTOIT教程.doc

    【AutoIt教程】AutoIt是一种轻量级的脚本语言,专用于自动化任务,它可以记录用户的操作,并能够重放执行这些操作,实现自动化完成一系列任务。这个教程主要针对初学者,帮助他们快速入门AutoIt。 **一、AutoIt环境...

    最经典脚本工具 AutoIt 3.2.4.1

    AutoIt的Script语法类似于VBScript,简单易学。  AutoIt 3是此类软件中影响最大的经典产品。现在能与它一争高低的只有AutoHotkey(为AutoIt成员另立门户之产品,参见AutoIT3 vs AutoHotkey)。  或者是为了...

    AutoIT教程

    AutoIT是一种强大的脚本语言,特别适用于自动化Windows桌面应用程序的任务。它被广泛用于系统管理员、程序员和普通用户,以简化日常计算机操作。AutoIT的主要优点是它的易学性、灵活性和与Windows API的深度集成。 ...

    autoit+upload+download

    AutoIt 是一款强大的脚本语言,专为自动化任务设计,尤其在Windows环境下有着广泛的应用。它结合了上传和下载功能,使得用户能够编写自动化脚本来处理文件传输操作。在这个"autoit+upload+download"的主题中,我们将...

Global site tag (gtag.js) - Google Analytics