怎样取得列表框的文字呀?用Au3Info什么也不显示?(已解决)
本帖最后由 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 这是下面那个控件的属性:
外部listview本来可以用ControlListView,但是我一直没测试成功过,楼主你试试吧 本帖最后由 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("")
$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
本帖最后由 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("")
$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 回复 5# 502762378
怎么可能永远是:退出代码永远是0?
我在Xp-sp3下测试的,成功运行后,返回的是1
当然还是用If @error Then Return更好点
“用return和exit有区别吗” 有点区别:Return是退出函数,exit则直接退出脚本了
当然在这里结果是一样的。对于在函数体内,用Exit制造出额外的脚本退出出口,不是很好的写作习惯! 回复 6# happytc
你的代码没问题,我是说我的测试执行winmsd的代码,不信你把我说的代码换成
If WinExists("") Then MsgBox(1,"",$iFlag)
回复happytc
你的代码没问题,我是说我的测试执行winmsd的代码,不信你把我说的代码换成
502762378 发表于 2012-5-3 01:51 http://www.autoitx.com/images/common/back.gif
我现在用的是精减系统,没有Winmsd.exe文件,网上下载个后一运行,又提示缺少别的,没法测了
不过,用If @error Then Return应该没有问题吧 代码学习了. 回复502762378
怎么可能永远是:退出代码永远是0?
我在Xp-sp3下测试的,成功运行后,返回的是 ...
happytc 发表于 2012-5-3 01:37 http://www.autoitx.com/images/common/back.gif
感谢 分享经验 小弟也一直在疑惑 这两个到底有什么不同的 回复 4# happytc
谢谢,学习了。 回复 5# 502762378 第十四行不需要两个== 回复yufei8051
happytc 发表于 2012-5-3 00:23 http://www.autoitx.com/images/common/back.gif
感谢学长!可是还是看不懂哦 #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("")
$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函数,怎么才能显示股票代码? 回复 14# yufei8051
“学长上面的代码,怎么把股票代码显示出来呀?比如用msgbox函数,怎么才能显示股票代码?”
什么叫‘股票代码’?
若是一楼的你提的问题,你改改上面的代码,把你用的股票软件的句柄替换掉上面的
不就可以了。并且大家也不知道你用的什么股票软件。所以上面的代码是给你一个例子,你自己动手修改下就可以了
页:
[1]
2