找回密码
 加入
搜索
查看: 2558|回复: 5

[AU3基础] _GUICtrlListBox_Create创建的不能放到选项卡内。

[复制链接]
发表于 2010-12-3 20:07:42 | 显示全部楼层 |阅读模式
#include-once
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include "NewASM.au3"
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUPX=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
Opt("TrayMenuMode", 1)
;----------界面部分--------------开始--------
Local $GUI

Local $tab
Local $tab0
Local $tab1
Local $tab2
Local $tab3
Local $tab4, $tab4_List_Mob, $tab4_List_Mob_Attack, $tab4_Button_Break_Mob, $tab4_Button_Add_Mob, $tab4_Button_Del_Mob
Local $tab5

Local $Button_Start
Local $Button_Stop
Local $Button_Save
Local $Button_Hide

Const $GAMENAME = 'SRO_Client'

$GUI = GUICreate("精灵外挂 v1.0", 600, 400)
GUISetFont(9, 300)

$tab = GUICtrlCreateTab(10, 10, 580, 350)
$tab0 = GUICtrlCreateTabItem("启动游戏")

$tab1 = GUICtrlCreateTabItem("基本设置")

$tab2 = GUICtrlCreateTabItem("技能设置")

$tab3 = GUICtrlCreateTabItem("宠物过滤")

$tab4 = GUICtrlCreateTabItem("打怪过滤")
$Group=GUICtrlCreateGroup('周围怪物', 15, 40, 230, 310)
$tab4_List_Mob = _GUICtrlListBox_Create($GUI, "", 20, 60, 220, 293)
$Group=GUICtrlCreateGroup('只打怪物(没有设置表示打全部)', 350, 40, 230, 310)
$tab4_List_Mob_Attack = _GUICtrlListBox_Create($GUI, "", 355, 60, 220, 293)
$tab4_Button_Break_Mob = GUICtrlCreateButton("刷新怪物", 262, 50, 70, 25)
$tab4_Button_Add_Mob = GUICtrlCreateButton("增加选中", 262, 150, 70, 25)
$tab4_Button_Del_Mob = GUICtrlCreateButton("删除选中", 262, 180, 70, 25)

$tab5 = GUICtrlCreateTabItem("记录消息")

GUICtrlCreateTabItem("")

GUICtrlCreateLabel("F5开始挂机,F6停止挂机,F7设置外挂", 20, 375, 250, 25)
$Button_Start = GUICtrlCreateButton("开始挂机", 440, 365, 70, 25)
$Button_Stop = GUICtrlCreateButton("停止挂机", 520, 365, 70, 25)
$Button_Save = GUICtrlCreateButton("保存设置", 440, 3, 70, 25)
$Button_Hide = GUICtrlCreateButton("隐藏窗口", 520, 3, 70, 25)
GUISetState()
;----------界面部分--------------结束--------
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case -4
                        Tray()
                        ;----------------------打怪过滤动作
                Case $tab4_Button_Break_Mob
                        $w_Handle = GetProcessHandle()
                        If $w_Handle <> 0 Then
                                _GUICtrlListBox_ResetContent($tab4_List_Mob)
                                _GUICtrlListBox_BeginUpdate($tab4_List_Mob)
                                Dim $eax, $ecx
                                Dim $type, $name, $mob_id
                                $eax = _MemoryRead($w_Handle, 0xA87018)
                                While 1
                                        $ecx = $eax - 0xCC
                                        $type = _MemoryRead($w_Handle, _MemoryRead($w_Handle, $ecx))
                                        If $type <= 0 Then ExitLoop
                                        If $type = 7566112 Then
                                                If _MemoryRead($w_Handle, $ecx + 0x118) > 0x10 Then
                                                        $name = _MemoryRead($w_Handle, _MemoryRead($w_Handle, $ecx + 0x104), 'char[200]')
                                                Else
                                                        $name = _MemoryRead($w_Handle, $ecx + 0x104, 'char[200]')
                                                EndIf
                                                $mob_id = _MemoryRead($w_Handle, $ecx + 0x184)
                                                _GUICtrlListBox_AddString($tab4_List_Mob, $name & '|' & $mob_id)
                                        EndIf
                                        $eax = _MemoryRead($w_Handle, $eax + 0xC)
                                WEnd
                                _GUICtrlListBox_EndUpdate($tab4_List_Mob)
                        EndIf
                Case $tab4_Button_Add_Mob
                        $text = _GUICtrlListBox_GetText($tab4_List_Mob, _GUICtrlListBox_GetCurSel($tab4_List_Mob))
                        If _GUICtrlListBox_FindInText($tab4_List_Mob_Attack, $text) = -1 Then
                                _GUICtrlListBox_BeginUpdate($tab4_List_Mob_Attack)
                                _GUICtrlListBox_AddString($tab4_List_Mob_Attack, $text)
                                _GUICtrlListBox_EndUpdate($tab4_List_Mob_Attack)
                        EndIf
                Case $tab4_Button_Del_Mob
                        ;----------------------
                Case $Button_Start
                Case $Button_Stop
                Case $Button_Save
                Case $Button_Hide
                        Tray()
        EndSwitch
        Switch TrayGetMsg()
                Case -13
                        Tray()
        EndSwitch
WEnd
Func GetProcessHandle()
        Dim $Hawd, $Pid, $w_Handle
        $Hawd = WinGetHandle($GAMENAME)
        If $Hawd <> 0 Then
                GetWindowThreadProcessId($Hawd, $Pid)
                $w_Handle = OpenProcess($Pid)
                If $w_Handle <> 0 Then
                        Return $w_Handle
                Else
                        Return 0
                EndIf
        Else
                Return 0
        EndIf
EndFunc   ;==>GetProcessHandle
Func Tray()
        If BitAND(WinGetState($GUI), 2) Then
                WinSetState($GUI, "", @SW_HIDE)
        Else
                WinSetState($GUI, "", @SW_SHOW)
        EndIf
EndFunc   ;==>Tray
_GUICtrlListBox_Create创建的不能放到选项卡内,其他的都能放,怎么办?
发表于 2010-12-3 20:57:55 | 显示全部楼层
我也弄不明白,但楼主有什么特殊需求吗,为什么不用 GUICtrlCreateList 呢?
 楼主| 发表于 2010-12-3 21:03:46 | 显示全部楼层
用 GUICtrlCreateList 如何去更新啊?
GUICtrlCreateList 只能删除全部。
 楼主| 发表于 2010-12-3 21:04:41 | 显示全部楼层
用 GUICtrlCreateList  我如何去获得里面的内容?
发表于 2010-12-3 21:45:26 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Include <GuiListBox.au3>

$Form1 = GUICreate("Form1", 520, 438, 192, 124)
$List1 = GUICtrlCreateList("", 88, 64, 273, 305)
$Label = GUICtrlCreateLabel("第一项的内容:", 88, 40, 200, 20)

GUICtrlSetData($List1, "日期:" & @YEAR & "-" & @MON & "-" & @MDAY)
GUICtrlSetData($List1, "时间:")

GUISetState(@SW_SHOW)
AdlibRegister("a", 1000)
$Time = 0
$nIndex = 1
$oIndex = 1

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd

Func a()
        $Time += 1
        If $Time = 2 Then
                $Index = Random(0, 1, 1)
                _GUICtrlListBox_SwapString($List1, $Index, $nIndex)
                $nIndex = $Index
                $Time = 0
        EndIf
        _GUICtrlListBox_ReplaceString($List1, $nIndex, "时间:" & @HOUR & "-" & @MIN & "-" & @SEC)
        GUICtrlSetData($Label, "第一项的内容:" & _GUICtrlListBox_GetText($List1, 0))
EndFunc
 楼主| 发表于 2010-12-3 21:51:15 | 显示全部楼层
谢谢楼上的。原来 _GUICtrlListBox 可以控制 GUICtrlCreateList
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 07:03 , Processed in 0.088037 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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