找回密码
 加入
搜索
查看: 9980|回复: 23

[AU3基础] 怎样取得列表框的文字呀?用Au3Info什么也不显示?(已解决)

 火.. [复制链接]
发表于 2012-5-2 18:01:34 | 显示全部楼层 |阅读模式
本帖最后由 yufei8051 于 2012-5-4 15:40 编辑

如图,想取得下图中的股票代码 002659,怎么才能得到?明明里面有字呀,可使用Au3Info可见文本那里什么也没用呀?下面那个列表框是List2,已经搜索了好长时间了,还是没找到办法,请高手们指点一下。请给出源码,极端感谢先


.
感谢各位大大回复指点!
可是本人水平太次,还是不懂哦
把我的思路说清楚,看看怎么实现:就是当预警窗口弹出时,脚本文件就自动读出预警框第一列前6为数字的股票代码,并自动填入交易软件以在无值守的情况下完成自动交易,至于是买进还是卖出,则用预警框里第二列第一个字来判断(买或卖)。如下图:

.
.
我这里有一个闪电下单的脚本,想稍微改造下,下面是闪电下单的源码,是从一个股票论坛找到的,原作者是小小盘,谢谢原作者。相关部分代码如下。
我不需要那么复杂的功能,想全仓半仓选择都不需要,只要预警框弹出后直接把股票代码输入交易软件,然后用脚本文件模拟键盘鼠标一路回车确认就好。

Func RunButton($ButtonNumber)
        $BB = "网上股票交易系统5.0"
        Switch $ButtonNumber
                Case 1
                        $Text = ControlGetText("飞狐交易师 - ", "", 65281)
                        Sleep(100)
                        $dm = StringRight($Text, 6)
                        
                        If Not WinActive($BB, "") Then WinActivate($BB, "")
                        WinWaitActive($BB, "")
                        $size = WinGetPos($BB)

                        Sleep(30)
                        Send("{F1}")
                        Sleep(50)
                        ControlSetText($BB, "", 1032, $dm);输入代码
                        Sleep(400)
                        $kemailiang = ControlGetText($BB, "", 1018)
                        
                        If GUICtrlRead($Radio1) = 1 Then
                                $mailiang = Int($kemailiang / 400) * 100
                        EndIf
                        If GUICtrlRead($Radio2) = 1 Then
                                $mailiang = Int($kemailiang / 300) * 100
                        EndIf
                        If GUICtrlRead($Radio3) = 1 Then
                                $mailiang = Int($kemailiang / 200) * 100
                        EndIf
                        
                        If GUICtrlRead($Radio4) = 1 Then
                                $mailiang = Int($kemailiang / 100) * 100
                        EndIf

本帖子中包含更多资源

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

×
 楼主| 发表于 2012-5-2 18:04:36 | 显示全部楼层
这是下面那个控件的属性:

本帖子中包含更多资源

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

×
发表于 2012-5-2 20:31:29 | 显示全部楼层
外部listview本来可以用ControlListView,但是我一直没测试成功过,楼主你试试吧

评分

参与人数 1金钱 +10 收起 理由
yufei8051 + 10 感谢指点

查看全部评分

发表于 2012-5-3 00:23:29 | 显示全部楼层
本帖最后由 happytc 于 2012-5-3 00:29 编辑

回复 1# yufei8051



#include <Array.au3>
#include <GuiListView.au3>


GetListText()
Func GetListText()
        Local $iFlag, $hWin, $hCtrl, $iCount = 0
        
        $iFlag = ShellExecuteWait("Explorer", @WindowsDir)
        Sleep(200)
        If Not $iFlag Then Return
        $hWin = WinGetHandle("[CLASS:ExploreWClass]")
        $hCtrl =ControlGetHandle($hWin, "", "SysListView321")
        $iCount =  _GUICtrlListView_GetItemCount($hCtrl)
        If $iCount == 0 Then Return
        Local $aItems[$iCount]
        For $i = 0 To $iCount-1
                $aItems[$i] = _GUICtrlListView_GetItemText($hCtrl, $i)
        Next
        _ArrayDisplay($aItems)
EndFunc

评分

参与人数 2金钱 +50 贡献 +5 收起 理由
yufei8051 + 10 非常感谢指点
502762378 + 40 + 5

查看全部评分

发表于 2012-5-3 01:15:36 | 显示全部楼层
本帖最后由 502762378 于 2012-5-3 01:17 编辑

回复 4# happytc


    前辈,看了你代码问你个问题?
If Not $iFlag Then Return这个有必要吗?这边ShellExecuteWait("winmsd.exe")的退出代码永远是0。我注释掉了这句,我这边的测试才成功。
还有你这样用return和exit有区别吗?
#include <Array.au3>
#include <GuiListView.au3>

GetListText()
Func GetListText()
        Local $iFlag, $hWin, $hCtrl, $iCount
        $iFlag = ShellExecuteWait("winmsd.exe")
        Sleep(2000)
                ;If Not $iFlag Then Return
        $hWin = WinGetHandle("[CLASS:PCHShell Window]")
        $hCtrl =ControlGetHandle($hWin, "", "SysListView321")
        $iCount =  _GUICtrlListView_GetItemCount($hCtrl)
                ;MsgBox(1,"",$iCount)
        If $iCount == 0 Then Return
                Local $aItems[$iCount]
                For $i = 0 To $iCount-1
                $aItems[$i] = _GUICtrlListView_GetItemText($hCtrl, $i)
                Next
        _ArrayDisplay($aItems)
EndFunc

评分

参与人数 1金钱 +10 收起 理由
yufei8051 + 10 感谢关注

查看全部评分

发表于 2012-5-3 01:37:10 | 显示全部楼层
回复 5# 502762378


    怎么可能永远是:退出代码永远是0?
我在Xp-sp3下测试的,成功运行后,返回的是1
当然还是用If @error Then Return更好点

“用return和exit有区别吗” 有点区别:Return是退出函数,exit则直接退出脚本了
当然在这里结果是一样的。对于在函数体内,用Exit制造出额外的脚本退出出口,不是很好的写作习惯!
发表于 2012-5-3 01:51:58 | 显示全部楼层
回复 6# happytc


    你的代码没问题,我是说我的测试执行winmsd的代码,不信你把我说的代码换成
If WinExists("[CLASS:PCHShell Window]") Then MsgBox(1,"",$iFlag)
发表于 2012-5-3 02:30:10 | 显示全部楼层
回复  happytc


    你的代码没问题,我是说我的测试执行winmsd的代码,不信你把我说的代码换成
502762378 发表于 2012-5-3 01:51


我现在用的是精减系统,没有Winmsd.exe文件,网上下载个后一运行,又提示缺少别的,没法测了
不过,用If @error Then Return应该没有问题吧

评分

参与人数 1贡献 +5 收起 理由
user3000 + 5 得学习老大的热心了!

查看全部评分

发表于 2012-5-3 06:39:35 | 显示全部楼层
代码学习了.
发表于 2012-5-3 06:46:20 | 显示全部楼层
回复  502762378


    怎么可能永远是:退出代码永远是0?
我在Xp-sp3下测试的,成功运行后,返回的是 ...
happytc 发表于 2012-5-3 01:37



    感谢   分享  经验   小弟也一直在  疑惑   这两个  到底有什么不同的
发表于 2012-5-3 12:58:55 | 显示全部楼层
回复 4# happytc

谢谢,学习了。
发表于 2012-5-3 13:41:42 | 显示全部楼层
回复 5# 502762378 第十四行不需要两个==
 楼主| 发表于 2012-5-3 15:23:39 | 显示全部楼层
回复  yufei8051
happytc 发表于 2012-5-3 00:23



    感谢学长!可是还是看不懂哦
 楼主| 发表于 2012-5-3 15:49:52 | 显示全部楼层
#include <GuiListView.au3>





GetListText()

Func GetListText()

        Local $iFlag, $hWin, $hCtrl, $iCount = 0

      

        $iFlag = ShellExecuteWait("Explorer", @WindowsDir)

        Sleep(200)

        If Not $iFlag Then Return

        $hWin = WinGetHandle("[CLASS:ExploreWClass]")

        $hCtrl =ControlGetHandle($hWin, "", "SysListView321")

        $iCount =  _GUICtrlListView_GetItemCount($hCtrl)

        If $iCount == 0 Then Return

        Local $aItems[$iCount]

        For $i = 0 To $iCount-1

                $aItems[$i] = _GUICtrlListView_GetItemText($hCtrl, $i)

        Next

        _ArrayDisplay($aItems)

EndFunc

学长上面的代码,怎么把股票代码显示出来呀?比如用msgbox函数,怎么才能显示股票代码?
发表于 2012-5-3 20:44:20 | 显示全部楼层
回复 14# yufei8051


    “学长上面的代码,怎么把股票代码显示出来呀?比如用msgbox函数,怎么才能显示股票代码?”

什么叫‘股票代码’?

若是一楼的你提的问题,你改改上面的代码,把你用的股票软件的句柄替换掉上面的[CLASS:ExploreWClass]

不就可以了。并且大家也不知道你用的什么股票软件。所以上面的代码是给你一个例子,你自己动手修改下就可以了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-19 06:22 , Processed in 0.117963 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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