Версия AutoIt:
3.3.14.2
Описание:
Есть документ - предположим с названием «GUI» с простым, но не маленьким скриптом.
Есть в нём GUI - на много кнопок. Есть функции, что ими вызываются
В чём вопрос.
Следует записать объявление функций при клике по кнопки таким образом, чтобы:
- была объявлена функция соответствующая номеру кнопки;
- и также, были объявлены, предварительно, функции, предшествующие (если есть) вызываемой функции
Примерно как на кнопках 37-40
Т.е. нужен скрипт, правильно прописывающий сами объявления функций, в документ с названием «GUI»
Примечания:
Сам документ "GUI" содержит следующий код (пример)
Спасибо
3.3.14.2
Описание:
Есть документ - предположим с названием «GUI» с простым, но не маленьким скриптом.
Есть в нём GUI - на много кнопок. Есть функции, что ими вызываются
В чём вопрос.
Следует записать объявление функций при клике по кнопки таким образом, чтобы:
- была объявлена функция соответствующая номеру кнопки;
- и также, были объявлены, предварительно, функции, предшествующие (если есть) вызываемой функции
Примерно как на кнопках 37-40
Т.е. нужен скрипт, правильно прописывающий сами объявления функций, в документ с названием «GUI»
Примечания:
Сам документ "GUI" содержит следующий код (пример)
Код:
#cs ----------------------------------------------------------------------------
Действие при нажатии - пока что обычный MsgBox (это для примера)
Действующие в примере кнопки: 40-37.
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <WinAPISys.au3>
#include <UIAutomate.au3>
#include <ButtonConstants.au3>
Opt("WinTitleMatchMode", 2)
Opt("WinWaitDelay",100)
HotKeySet("{ESC}", "_Exit")
Global $Paused
HotKeySet("{F9}", "TogglePause")
Local $hGui, $OptionsBtn, $OptionsDummy, $OptionsContext, $OptionsCommon, $OptionsFile, $msg
Local $OptionsExit, $HelpBtn, $HelpDummy, $HelpContext, $HelpWWW, $HelpAbout
Local $TriBtn, $TriDummy, $TriContext, $TriWWW, $TriAbout
Local $textGuiCtrlCreateLabel,$S_CENTER
$hGui = GUICreate("Выбор вариантов: 3 категории", 550, 100)
$font = "Verdana"
$textGuiCtrlCreateLabel = GUICtrlCreateLabel ('Нужно выбрать: сколько 3-ёх очковых бросков ', 10, 8, 480, 17, $SS_CENTER)
$textGuiCtrlCreateLabel_2 = GUICtrlCreateLabel ('в среднем за игру делает Шакил О’Нил"', 10, 30, 480, 17, $SS_CENTER)
GUICtrlSetFont($textGuiCtrlCreateLabel_2,9,400)
$1Knopka = GUICtrlCreateButton("&От 1 до 10", 10, 60, 90, 20, $BS_FLAT)
$1Dummy = GUICtrlCreateDummy()
$1Context = GUICtrlCreateContextMenu($1Dummy)
$1variant_vibora = GUICtrlCreateMenuItem("1 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$2variant_vibora = GUICtrlCreateMenuItem("2 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$3variant_vibora = GUICtrlCreateMenuItem("3 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$4variant_vibora = GUICtrlCreateMenuItem("4 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$5variant_vibora = GUICtrlCreateMenuItem("5 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$6variant_vibora = GUICtrlCreateMenuItem("6 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$7variant_vibora = GUICtrlCreateMenuItem("7 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$8variant_vibora = GUICtrlCreateMenuItem("8 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$9variant_vibora = GUICtrlCreateMenuItem("9 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$10variant_vibora = GUICtrlCreateMenuItem("10 (бросков)", $1Context)
GUICtrlCreateMenuItem("", $1Context)
$2Knopka = GUICtrlCreateButton("&От 11 до 20", 110, 60, 90, 20, $BS_FLAT)
$2Dummy = GUICtrlCreateDummy()
$2Context = GUICtrlCreateContextMenu($2Dummy)
$11variant_vibora = GUICtrlCreateMenuItem("11 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$12variant_vibora = GUICtrlCreateMenuItem("12 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$13variant_vibora = GUICtrlCreateMenuItem("13 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$14variant_vibora = GUICtrlCreateMenuItem("14 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$15variant_vibora = GUICtrlCreateMenuItem("15 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$16variant_vibora = GUICtrlCreateMenuItem("16 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$17variant_vibora = GUICtrlCreateMenuItem("17 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$18variant_vibora = GUICtrlCreateMenuItem("18 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$19variant_vibora = GUICtrlCreateMenuItem("19 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$20variant_vibora = GUICtrlCreateMenuItem("20 (бросков)", $2Context)
GUICtrlCreateMenuItem("", $2Context)
$3Knopka = GUICtrlCreateButton("&От 21 до 30", 210, 60, 90, 20, $BS_FLAT)
$3Dummy = GUICtrlCreateDummy()
$3Context = GUICtrlCreateContextMenu($3Dummy)
$21variant_vibora = GUICtrlCreateMenuItem("21 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$22variant_vibora = GUICtrlCreateMenuItem("22 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$23variant_vibora = GUICtrlCreateMenuItem("23 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$24variant_vibora = GUICtrlCreateMenuItem("24 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$25variant_vibora = GUICtrlCreateMenuItem("25 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$26variant_vibora = GUICtrlCreateMenuItem("26 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$27variant_vibora = GUICtrlCreateMenuItem("27 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$28variant_vibora = GUICtrlCreateMenuItem("28 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$29variant_vibora = GUICtrlCreateMenuItem("29 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$30variant_vibora = GUICtrlCreateMenuItem("30 (бросков)", $3Context)
GUICtrlCreateMenuItem("", $3Context)
$4Knopka = GUICtrlCreateButton("&От 31 до 40", 310, 60, 90, 20, $BS_FLAT)
$4Dummy = GUICtrlCreateDummy()
$4Context = GUICtrlCreateContextMenu($4Dummy)
$31variant_vibora = GUICtrlCreateMenuItem("31 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$32variant_vibora = GUICtrlCreateMenuItem("32 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$33variant_vibora = GUICtrlCreateMenuItem("33 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$34variant_vibora = GUICtrlCreateMenuItem("34 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$35variant_vibora = GUICtrlCreateMenuItem("35 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$36variant_vibora = GUICtrlCreateMenuItem("36 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$37variant_vibora = GUICtrlCreateMenuItem("37 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$38variant_vibora = GUICtrlCreateMenuItem("38 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$39variant_vibora = GUICtrlCreateMenuItem("39 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
$40variant_vibora = GUICtrlCreateMenuItem("40 (бросков)", $4Context)
GUICtrlCreateMenuItem("", $4Context)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $1Knopka
ShowMenu($hGui, $msg, $1Context)
Case $2Knopka
ShowMenu($hGui, $msg, $2Context)
Case $3Knopka
ShowMenu($hGui, $msg, $3Context)
Case $4Knopka
ShowMenu($hGui, $msg, $4Context)
Case $1variant_vibora
ExitLoop
Case $2variant_vibora
ExitLoop
Case $3variant_vibora
ExitLoop
Case $4variant_vibora
ExitLoop
Case $5variant_vibora
ExitLoop
Case $6variant_vibora
ExitLoop
Case $7variant_vibora
ExitLoop
Case $8variant_vibora
ExitLoop
Case $9variant_vibora
ExitLoop
Case $10variant_vibora
ExitLoop
Case $11variant_vibora
ExitLoop
Case $12variant_vibora
ExitLoop
Case $13variant_vibora
ExitLoop
Case $14variant_vibora
ExitLoop
Case $15variant_vibora
ExitLoop
Case $16variant_vibora
ExitLoop
Case $17variant_vibora
ExitLoop
Case $18variant_vibora
ExitLoop
Case $19variant_vibora
ExitLoop
Case $20variant_vibora
ExitLoop
Case $21variant_vibora
ExitLoop
Case $22variant_vibora
ExitLoop
Case $23variant_vibora
ExitLoop
Case $24variant_vibora
ExitLoop
Case $25variant_vibora
ExitLoop
Case $26variant_vibora
ExitLoop
Case $27variant_vibora
ExitLoop
Case $28variant_vibora
ExitLoop
Case $29variant_vibora
ExitLoop
Case $30variant_vibora
ExitLoop
Case $31variant_vibora
ExitLoop
Case $32variant_vibora
ExitLoop
Case $33variant_vibora
ExitLoop
Case $34variant_vibora
ExitLoop
Case $35variant_vibora
ExitLoop
Case $36variant_vibora
ExitLoop
Case $37variant_vibora
deystvie_40()
deystvie_39()
deystvie_38()
deystvie_37()
ExitLoop
Case $38variant_vibora
deystvie_40()
deystvie_39()
deystvie_38()
ExitLoop
Case $39variant_vibora
deystvie_40()
deystvie_39()
ExitLoop
Case $40variant_vibora
deystvie_40()
ExitLoop
EndSwitch
WEnd
GUIDelete()
Func ShowMenu($hWnd, $CtrlID, $nContextID)
Local $arPos, $x, $y
Local $hMenu = GUICtrlGetHandle($nContextID)
$arPos = ControlGetPos($hWnd, "", $CtrlID)
$x = $arPos[0]
$y = $arPos[1] + $arPos[3]
ClientToScreen($hWnd, $x, $y)
TrackPopupMenu($hWnd, $hMenu, $x, $y)
EndFunc
Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
Local $stPoint = DllStructCreate("int;int")
DllStructSetData($stPoint, 1, $x)
DllStructSetData($stPoint, 2, $y)
DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
$x = DllStructGetData($stPoint, 1)
$y = DllStructGetData($stPoint, 2)
$stPoint = 0
EndFunc
Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
EndFunc
#CS
Функции при клике на кнопку...
#CE
Func deystvie_1()
MsgBox(64,"","Выбрано: 1",1)
EndFunc
Func deystvie_2()
MsgBox(64,"","Выбрано: 1",1)
MsgBox(64,"","Выбрано: 2",1)
EndFunc
Func deystvie_3()
MsgBox(64,"","Выбрано: 1",1)
MsgBox(64,"","Выбрано: 2",1)
MsgBox(64,"","Выбрано: 3",1)
EndFunc
Func deystvie_4()
EndFunc
Func deystvie_5()
EndFunc
Func deystvie_6()
EndFunc
Func deystvie_7()
EndFunc
Func deystvie_8()
EndFunc
Func deystvie_9()
EndFunc
Func deystvie_10()
EndFunc
Func deystvie_11()
EndFunc
Func deystvie_12()
EndFunc
Func deystvie_13()
EndFunc
Func deystvie_14()
EndFunc
Func deystvie_15()
EndFunc
Func deystvie_16()
EndFunc
Func deystvie_17()
EndFunc
Func deystvie_18()
EndFunc
Func deystvie_19()
EndFunc
Func deystvie_20()
EndFunc
Func deystvie_21()
EndFunc
Func deystvie_22()
EndFunc
Func deystvie_23()
EndFunc
Func deystvie_24()
EndFunc
Func deystvie_25()
EndFunc
Func deystvie_26()
EndFunc
Func deystvie_27()
EndFunc
Func deystvie_28()
EndFunc
Func deystvie_29()
EndFunc
Func deystvie_30()
EndFunc
Func deystvie_31()
EndFunc
Func deystvie_32()
EndFunc
Func deystvie_33()
EndFunc
Func deystvie_34()
EndFunc
Func deystvie_35()
EndFunc
Func deystvie_36()
EndFunc
Func deystvie_37()
MsgBox(262208,"","Выбрано: действие: # 37",2)
EndFunc
Func deystvie_38()
MsgBox(262208,"","Выбрано: действие: # 38",2)
EndFunc
Func deystvie_39()
MsgBox(262208,"","Выбрано: действие: # 39",2)
EndFunc
Func deystvie_40()
MsgBox(262208,"","Выбрано: действие: # 40",2)
EndFunc
#CS
Дополнительные функции
#CE
Func _Exit()
Exit
EndFunc
Func TogglePause()
$Paused = Not $Paused
If $Paused Then
ToolTip('Ручная пауза! Для снятия жать F9', 0, 0, 'Внимание', 0, 4)
TrayTip('Внимание', 'Ручная пауза! Для снятия жать F9', 3, 1)
Else
ToolTip('', 0, 0)
TrayTip('', '', 0)
EndIf
While $Paused
WEnd
EndFunc
Func _FixAccelHotKeyLayout()
Static $iKbrdLayout, $aKbrdLayouts
If Execute('@exitMethod') <> '' Then
Local $iUnLoad = 1
For $i = 1 To $aKbrdLayouts[0]
If Hex($iKbrdLayout) = Hex('0x' & StringRight($aKbrdLayouts[$i], 4)) Then
$iUnLoad = 0
ExitLoop
EndIf
Next
If $iUnLoad Then
_WinAPI_UnloadKeyboardLayout($iKbrdLayout)
EndIf
Return
EndIf
$iKbrdLayout = 0x0409
$aKbrdLayouts = _WinAPI_GetKeyboardLayoutList()
_WinAPI_LoadKeyboardLayout($iKbrdLayout, $KLF_ACTIVATE)
OnAutoItExitRegister('_FixAccelHotKeyLayout')
EndFunc