Что нового

GUI для заполнения основных переменных бота

LapaM

Новичок
Сообщения
7
Репутация
4
Всем привет! :smile:

Решил познакомиться с AutoIt в контексте написания майнинг бота для ивки. Что-то более мение получилось (Огромное спасибо отцам этого раздела). Но передо мной так-же стоял вопрос портирования бота с компа на комп. Для этих целий был написан простинький скрипт авто заполнения переменных. Под впечатлением от этой http://autoit-script.ru/index.php/topic,2436.0.html темы, я к своему скрипту добавил GUI. Вот собственно говоря то – что получилось.

Код:
#cs ----------------------------------------------------------------------------
	
	AutoIt Version: 3.3.6.1
	
	Script Function:
	Fill global variable with GUI
	
#ce ----------------------------------------------------------------------------

#include <GUIConstants.au3>
#include "MouseOnEvent.au3"

HotKeySet("{z}", "StartSet");задаем горячую клавишу

#Region - ;Variable
Global $IniFileName = "EVE_Variable.ini"
Global $VarsName[13] ;
$VarsName[0] = "MainMenu" ; Треугольник главного меню
$VarsName[1] = "OverView" ; Треугольник овервью
$VarsName[2] = "UndockBut" ; Андок
$VarsName[3] = "WarpTest1" ; Тест на варп 1
$VarsName[4] = "LockBut" ; Кнопка лока
$VarsName[5] = "LockCheck" ; Изображение лока
$VarsName[6] = "CargoFullCheck" ; Проверка заполнености трюма
$VarsName[7] = "CargoEmptyCheck"; Проветка пустаты трюма
$VarsName[8] = "Cargo" ; Позиция трюма
$VarsName[9] = "Angar" ; Позиция ангара
$VarsName[10] = "LogInButton" ; Позиция бордера кнопки логина
$VarsName[11] = "ApproachButton"; Позиция кнопки апроча
$VarsName[12] = "DockButton" ; Позиция кнопки дока

Global $X1[13] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Global $Y1[13] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Global $X2[13] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Global $Y2[13] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Global $Color[13] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Global $CurIndex = -1
Global $Flag = -1
Global $WindowName = ""
#EndRegion

#Region - ;GUI
Opt("GUIOnEventMode", 1)
;+++++++ UI
Global $MainWindowID = GUICreate("AutoFill", 450, 500,0,0,-1,$WS_EX_TOPMOST)
Global $SecondWindowID 
Global $TITLENAMEID = GUICtrlCreateLabel("Проверяемое значение", 10, 10)
Global $TITLEX1ID = GUICtrlCreateLabel("X1", 160, 10)
Global $TITLEX2ID = GUICtrlCreateLabel("X2", 200, 10)
Global $TITLEY1ID = GUICtrlCreateLabel("Y1", 240, 10)
Global $TITLEY2ID = GUICtrlCreateLabel("Y2", 280, 10)
Global $TITLECOLORID = GUICtrlCreateLabel("Color", 320, 10)
Global $WindowNameLabelID = GUICtrlCreateLabel("Имя окна", 10, 430)
Global $WindowNameID = GUICtrlCreateEdit("", 160, 430, 150)
Global $StartSetButtonID = GUICtrlCreateButton("Начать установку", 50, 470)
Global $MainMenuLabelID = GUICtrlCreateLabel("Главное меню", 10, 40)
Global $OverViewLabelID = GUICtrlCreateLabel("Овервью", 10, 70)
Global $UndockButLabelID = GUICtrlCreateLabel("Андок кнопка", 10, 100)
Global $WarpTest1LabelID = GUICtrlCreateLabel("Варп тест", 10, 130)
Global $LockButLabelID = GUICtrlCreateLabel("Лок", 10, 160)
Global $LockCheckLabelID = GUICtrlCreateLabel("Проверка лока", 10, 190)
Global $CargoFullCheckLabelID = GUICtrlCreateLabel("Заполненость карго", 10, 220)
Global $CargoEmptyCheckLabelID = GUICtrlCreateLabel("Пустота карго", 10, 250)
Global $CargoLabelID = GUICtrlCreateLabel("Карго", 10, 280)
Global $AngarLabelID = GUICtrlCreateLabel("Ангар", 10, 310)
Global $LogInButtonLabelID = GUICtrlCreateLabel("Логин", 10, 340)
Global $ApproachButtonLabelID = GUICtrlCreateLabel("Approach", 10, 370)
Global $DockButtonLabelID = GUICtrlCreateLabel("Dock", 10, 400)
;+++++++ MainMenu settings
Global $MainMenuX1ID = GUICtrlCreateEdit("", 160, 40, 35)
Global $MainMenuY1ID = GUICtrlCreateEdit("", 200, 40)
Global $MainMenuX2ID = GUICtrlCreateEdit("", 240, 40)
Global $MainMenuY2ID = GUICtrlCreateEdit("", 280, 40)
Global $MainMenuColorID = GUICtrlCreateEdit("", 320, 40, 70)
Global $MainMenuRadioID = GUICtrlCreateRadio("", 400, 40, 20, 20)
;+++++++ OverView settings
Global $OverViewX1ID = GUICtrlCreateEdit("", 160, 70, 35)
Global $OverViewY1ID = GUICtrlCreateEdit("", 200, 70)
Global $OverViewX2ID = GUICtrlCreateEdit("", 240, 70)
Global $OverViewY2ID = GUICtrlCreateEdit("", 280, 70)
Global $OverViewColorID = GUICtrlCreateEdit("", 320, 70, 70)
Global $OverViewRadioID = GUICtrlCreateRadio("", 400, 70, 20, 20)
;+++++++ UndockBut settings
Global $UndockButX1ID = GUICtrlCreateEdit("", 160, 100, 35)
Global $UndockButY1ID = GUICtrlCreateEdit("", 200, 100)
Global $UndockButX2ID = GUICtrlCreateEdit("", 240, 100)
Global $UndockButY2ID = GUICtrlCreateEdit("", 280, 100)
Global $UndockButColorID = GUICtrlCreateEdit("", 320, 100, 70)
Global $UndockButRadioID = GUICtrlCreateRadio("", 400, 100, 20, 20)
;+++++++ WarpTest1 settings
Global $WarpTest1X1ID = GUICtrlCreateEdit("", 160, 130, 35)
Global $WarpTest1Y1ID = GUICtrlCreateEdit("", 200, 130)
Global $WarpTest1X2ID = GUICtrlCreateEdit("", 240, 130)
Global $WarpTest1Y2ID = GUICtrlCreateEdit("", 280, 130)
Global $WarpTest1ColorID = GUICtrlCreateEdit("", 320, 130, 70)
Global $WarpTest1RadioID = GUICtrlCreateRadio("", 400, 130, 20, 20)
;+++++++ LockBut settings
Global $LockButX1ID = GUICtrlCreateEdit("", 160, 160, 35)
Global $LockButY1ID = GUICtrlCreateEdit("", 200, 160)
Global $LockButX2ID = GUICtrlCreateEdit("", 240, 160)
Global $LockButY2ID = GUICtrlCreateEdit("", 280, 160)
Global $LockButColorID = GUICtrlCreateEdit("", 320, 160, 70)
Global $LockButRadioID = GUICtrlCreateRadio("", 400, 160, 20, 20)
;+++++++ LockCheck settings
Global $LockCheckX1ID = GUICtrlCreateEdit("", 160, 190, 35)
Global $LockCheckY1ID = GUICtrlCreateEdit("", 200, 190)
Global $LockCheckX2ID = GUICtrlCreateEdit("", 240, 190)
Global $LockCheckY2ID = GUICtrlCreateEdit("", 280, 190)
Global $LockCheckColorID = GUICtrlCreateEdit("", 320, 190, 70)
Global $LockCheckRadioID = GUICtrlCreateRadio("", 400, 190, 20, 20)
;+++++++ CargoFullCheck settings
Global $CargoFullCheckX1ID = GUICtrlCreateEdit("", 160, 220, 35)
Global $CargoFullCheckY1ID = GUICtrlCreateEdit("", 200, 220)
Global $CargoFullCheckX2ID = GUICtrlCreateEdit("", 240, 220)
Global $CargoFullCheckY2ID = GUICtrlCreateEdit("", 280, 220)
Global $CargoFullCheckColorID = GUICtrlCreateEdit("", 320, 220, 70)
Global $CargoFullCheckID = GUICtrlCreateRadio("", 400, 220, 20, 20)
;+++++++ CargoEmptyCheck settings
Global $CargoEmptyCheckX1ID = GUICtrlCreateEdit("", 160, 250, 35)
Global $CargoEmptyCheckY1ID = GUICtrlCreateEdit("", 200, 250)
Global $CargoEmptyCheckX2ID = GUICtrlCreateEdit("", 240, 250)
Global $CargoEmptyCheckY2ID = GUICtrlCreateEdit("", 280, 250)
Global $CargoEmptyCheckColorID = GUICtrlCreateEdit("", 320, 250, 70)
Global $CargoEmptyCheckRadioID = GUICtrlCreateRadio("", 400, 250, 20, 20)
;+++++++ Cargo settings
Global $CargoX1ID = GUICtrlCreateEdit("", 160, 280, 35)
Global $CargoY1ID = GUICtrlCreateEdit("", 200, 280)
Global $CargoX2ID = GUICtrlCreateEdit("", 240, 280)
Global $CargoY2ID = GUICtrlCreateEdit("", 280, 280)
Global $CargoColorID = GUICtrlCreateEdit("", 320, 280, 70)
Global $CargoRadioID = GUICtrlCreateRadio("", 400, 280, 20, 20)
;+++++++ Angar settings
Global $AngarX1ID = GUICtrlCreateEdit("", 160, 310, 35)
Global $AngarY1ID = GUICtrlCreateEdit("", 200, 310)
Global $AngarX2ID = GUICtrlCreateEdit("", 240, 310)
Global $AngarY2ID = GUICtrlCreateEdit("", 280, 310)
Global $AngarColorID = GUICtrlCreateEdit("", 320, 310, 70)
Global $AngarRadioID = GUICtrlCreateRadio("", 400, 310, 20, 20)
;+++++++ LogInButton settings
Global $LogInButtonX1ID = GUICtrlCreateEdit("", 160, 340, 35)
Global $LogInButtonY1ID = GUICtrlCreateEdit("", 200, 340)
Global $LogInButtonX2ID = GUICtrlCreateEdit("", 240, 340)
Global $LogInButtonY2ID = GUICtrlCreateEdit("", 280, 340)
Global $LogInButtonColorID = GUICtrlCreateEdit("", 320, 340, 70)
Global $LogInButtonRadioID = GUICtrlCreateRadio("", 400, 340, 20, 20)
;+++++++ ApproachButton settings
Global $ApproachButtonX1ID = GUICtrlCreateEdit("", 160, 370, 35)
Global $ApproachButtonY1ID = GUICtrlCreateEdit("", 200, 370)
Global $ApproachButtonX2ID = GUICtrlCreateEdit("", 240, 370)
Global $ApproachButtonY2ID = GUICtrlCreateEdit("", 280, 370)
Global $ApproachButtonColorID = GUICtrlCreateEdit("", 320, 370, 70)
Global $ApproachButtonRadioID = GUICtrlCreateRadio("", 400, 370, 20, 20)
;+++++++ DockButton settings
Global $DockButtonX1ID = GUICtrlCreateEdit("", 160, 400, 35)
Global $DockButtonY1ID = GUICtrlCreateEdit("", 200, 400)
Global $DockButtonX2ID = GUICtrlCreateEdit("", 240, 400)
Global $DockButtonY2ID = GUICtrlCreateEdit("", 280, 400)
Global $DockButtonColorID = GUICtrlCreateEdit("", 320, 400, 70)
Global $DockButtonRadioID = GUICtrlCreateRadio("", 400, 400, 20, 20)
;+++++++ Event settings
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($StartSetButtonID, "StartSet")
GUICtrlSetOnEvent($MainMenuRadioID, "SelectRadio")
GUICtrlSetOnEvent($OverViewRadioID, "SelectRadio")
GUICtrlSetOnEvent($UndockButRadioID, "SelectRadio")
GUICtrlSetOnEvent($WarpTest1RadioID, "SelectRadio")
GUICtrlSetOnEvent($LockButRadioID, "SelectRadio")
GUICtrlSetOnEvent($LockCheckRadioID, "SelectRadio")
GUICtrlSetOnEvent($CargoFullCheckID, "SelectRadio")
GUICtrlSetOnEvent($CargoEmptyCheckRadioID, "SelectRadio")
GUICtrlSetOnEvent($CargoRadioID, "SelectRadio")
GUICtrlSetOnEvent($AngarRadioID, "SelectRadio")
GUICtrlSetOnEvent($LogInButtonRadioID, "SelectRadio")
GUICtrlSetOnEvent($ApproachButtonRadioID, "SelectRadio")
GUICtrlSetOnEvent($DockButtonRadioID, "SelectRadio")
GUICtrlSetOnEvent($WindowNameID, "EditWindowName")
;+++++++++
#EndRegion

InitGUI()
GUISetState(@SW_SHOW)
Sleep(2000)

While 1
	Sleep(1000) ; Idle around
WEnd

Func CLOSEClicked()
	Local $i
	InitData()
	For $i = 0 To 12
		IniWrite($IniFileName, "var", "$" & $VarsName[$i] & "X1", $X1[$i])
		IniWrite($IniFileName, "var", "$" & $VarsName[$i] & "Y1", $Y1[$i])
		IniWrite($IniFileName, "var", "$" & $VarsName[$i] & "X2", $X2[$i])
		IniWrite($IniFileName, "var", "$" & $VarsName[$i] & "Y2", $Y2[$i])
		IniWrite($IniFileName, "var", "$" & $VarsName[$i] & "Color", "0x" & Hex($Color[$i], 6))
	Next
	Exit
EndFunc   ;==>CLOSEClicked

Func EditWindowName()
	$WindowName = GUICtrlRead($WindowNameID)
EndFunc   ;==>EditWindowName

Func FirstCordSet()
	If $Flag == 1 And WinActive($WindowName) Then
		If $CurIndex <> -1 Then
			Dim $MousePos
			Dim $PosColor
			$MousePos = MouseGetPos()
			$PosColor = PixelGetColor($MousePos[0], $MousePos[1])
			$X1[$CurIndex] = $MousePos[0]
			$Y1[$CurIndex] = $MousePos[1]			
			InitGUI()
		EndIf
	EndIf
EndFunc   ;==>FirstCordSet
Func InitData()
	$X1[0] = GUICtrlRead($MainMenuX1ID)
	$Y1[0] = GUICtrlRead($MainMenuY1ID)
	$X2[0] = GUICtrlRead($MainMenuX2ID)
	$Y2[0] = GUICtrlRead($MainMenuY2ID)
	$Color[0] = GUICtrlRead($MainMenuColorID)
	$X1[1] = GUICtrlRead($OverViewX1ID)
	$Y1[1] = GUICtrlRead($OverViewY1ID)
	$X2[1] = GUICtrlRead($OverViewX2ID)
	$Y2[1] = GUICtrlRead($OverViewY2ID)
	$Color[1] = GUICtrlRead($OverViewColorID)
	$X1[2] = GUICtrlRead($UndockButX1ID)
	$Y1[2] = GUICtrlRead($UndockButY1ID)
	$X2[2] = GUICtrlRead($UndockButX2ID)
	$Y2[2] = GUICtrlRead($UndockButY2ID)
	$Color[2] = GUICtrlRead($UndockButColorID)
	$X1[3] = GUICtrlRead($WarpTest1X1ID)
	$Y1[3] = GUICtrlRead($WarpTest1Y1ID)
	$X2[3] = GUICtrlRead($WarpTest1X2ID)
	$Y2[3] = GUICtrlRead($WarpTest1Y2ID)
	$Color[3] = GUICtrlRead($WarpTest1ColorID)
	$X1[4] = GUICtrlRead($LockButX1ID)
	$Y1[4] = GUICtrlRead($LockButY1ID)
	$X2[4] = GUICtrlRead($LockButX2ID)
	$Y2[4] = GUICtrlRead($LockButY2ID)
	$Color[4] = GUICtrlRead($LockButColorID)
	$X1[5] = GUICtrlRead($LockCheckX1ID)
	$Y1[5] = GUICtrlRead($LockCheckY1ID)
	$X2[5] = GUICtrlRead($LockCheckX2ID)
	$Y2[5] = GUICtrlRead($LockCheckY2ID)
	$Color[5] = GUICtrlRead($LockCheckColorID)
	$X1[6] = GUICtrlRead($CargoFullCheckX1ID)
	$Y1[6] = GUICtrlRead($CargoFullCheckY1ID)
	$X2[6] = GUICtrlRead($CargoFullCheckX2ID)
	$Y2[6] = GUICtrlRead($CargoFullCheckY2ID)
	$Color[6] = GUICtrlRead($CargoFullCheckColorID)
	$X1[7] = GUICtrlRead($CargoEmptyCheckX1ID)
	$Y1[7] = GUICtrlRead($CargoEmptyCheckY1ID)
	$X2[7] = GUICtrlRead($CargoEmptyCheckX2ID)
	$Y2[7] = GUICtrlRead($CargoEmptyCheckY2ID)
	$Color[7] = GUICtrlRead($CargoEmptyCheckColorID)
	$X1[8] = GUICtrlRead($CargoX1ID)
	$Y1[8] = GUICtrlRead($CargoY1ID)
	$X2[8] = GUICtrlRead($CargoX2ID)
	$Y2[8] = GUICtrlRead($CargoY2ID)
	$Color[8] = GUICtrlRead($CargoColorID)
	$X1[9] = GUICtrlRead($AngarX1ID)
	$Y1[9] = GUICtrlRead($AngarY1ID)
	$X2[9] = GUICtrlRead($AngarX2ID)
	$Y2[9] = GUICtrlRead($AngarY2ID)
	$Color[9] = GUICtrlRead($AngarColorID)
	$X1[10] = GUICtrlRead($LogInButtonX1ID)
	$Y1[10] = GUICtrlRead($LogInButtonY1ID)
	$X2[10] = GUICtrlRead($LogInButtonX2ID)
	$Y2[10] = GUICtrlRead($LogInButtonY2ID)
	$Color[10] = GUICtrlRead($LogInButtonColorID)
	$X1[11] = GUICtrlRead($ApproachButtonX1ID)
	$Y1[11] = GUICtrlRead($ApproachButtonY1ID)
	$X2[11] = GUICtrlRead($ApproachButtonX2ID)
	$Y2[11] = GUICtrlRead($ApproachButtonY2ID)
	$Color[11] = GUICtrlRead($ApproachButtonColorID)
	$X1[12] = GUICtrlRead($DockButtonX1ID)
	$Y1[12] = GUICtrlRead($DockButtonY1ID)
	$X2[12] = GUICtrlRead($DockButtonX2ID)
	$Y2[12] = GUICtrlRead($DockButtonY2ID)
	$Color[12] = GUICtrlRead($DockButtonColorID)
EndFunc   ;==>InitData

Func InitGUI()
	GUICtrlSetData($MainMenuX1ID, $X1[0])
	GUICtrlSetData($MainMenuY1ID, $Y1[0])
	GUICtrlSetData($MainMenuX2ID, $X2[0])
	GUICtrlSetData($MainMenuY2ID, $Y2[0])
	GUICtrlSetData($MainMenuColorID, $Color[0])
	GUICtrlSetData($OverViewX1ID, $X1[1])
	GUICtrlSetData($OverViewY1ID, $Y1[1])
	GUICtrlSetData($OverViewX2ID, $X2[1])
	GUICtrlSetData($OverViewY2ID, $Y2[1])
	GUICtrlSetData($OverViewColorID, $Color[1])
	GUICtrlSetData($UndockButX1ID, $X1[2])
	GUICtrlSetData($UndockButY1ID, $Y1[2])
	GUICtrlSetData($UndockButX2ID, $X2[2])
	GUICtrlSetData($UndockButY2ID, $Y2[2])
	GUICtrlSetData($UndockButColorID, $Color[2])
	GUICtrlSetData($WarpTest1X1ID, $X1[3])
	GUICtrlSetData($WarpTest1Y1ID, $Y1[3])
	GUICtrlSetData($WarpTest1X2ID, $X2[3])
	GUICtrlSetData($WarpTest1Y2ID, $Y2[3])
	GUICtrlSetData($WarpTest1ColorID, $Color[3])
	GUICtrlSetData($LockButX1ID, $X1[4])
	GUICtrlSetData($LockButY1ID, $Y1[4])
	GUICtrlSetData($LockButX2ID, $X2[4])
	GUICtrlSetData($LockButY2ID, $Y2[4])
	GUICtrlSetData($LockButColorID, $Color[4])
	GUICtrlSetData($LockCheckX1ID, $X1[5])
	GUICtrlSetData($LockCheckY1ID, $Y1[5])
	GUICtrlSetData($LockCheckX2ID, $X2[5])
	GUICtrlSetData($LockCheckY2ID, $Y2[5])
	GUICtrlSetData($LockCheckColorID, $Color[5])
	GUICtrlSetData($CargoFullCheckX1ID, $X1[6])
	GUICtrlSetData($CargoFullCheckY1ID, $Y1[6])
	GUICtrlSetData($CargoFullCheckX2ID, $X2[6])
	GUICtrlSetData($CargoFullCheckY2ID, $Y2[6])
	GUICtrlSetData($CargoFullCheckColorID, $Color[6])
	GUICtrlSetData($CargoEmptyCheckX1ID, $X1[7])
	GUICtrlSetData($CargoEmptyCheckY1ID, $Y1[7])
	GUICtrlSetData($CargoEmptyCheckX2ID, $X2[7])
	GUICtrlSetData($CargoEmptyCheckY2ID, $Y2[7])
	GUICtrlSetData($CargoEmptyCheckColorID, $Color[7])
	GUICtrlSetData($CargoX1ID, $X1[8])
	GUICtrlSetData($CargoY1ID, $Y1[8])
	GUICtrlSetData($CargoX2ID, $X2[8])
	GUICtrlSetData($CargoY2ID, $Y2[8])
	GUICtrlSetData($CargoColorID, $Color[8])
	GUICtrlSetData($AngarX1ID, $X1[9])
	GUICtrlSetData($AngarY1ID, $Y1[9])
	GUICtrlSetData($AngarX2ID, $X2[9])
	GUICtrlSetData($AngarY2ID, $Y2[9])
	GUICtrlSetData($AngarColorID, $Color[9])
	GUICtrlSetData($LogInButtonX1ID, $X1[10])
	GUICtrlSetData($LogInButtonY1ID, $Y1[10])
	GUICtrlSetData($LogInButtonX2ID, $X2[10])
	GUICtrlSetData($LogInButtonY2ID, $Y2[10])
	GUICtrlSetData($LogInButtonColorID, $Color[10])
	GUICtrlSetData($ApproachButtonX1ID, $X1[11])
	GUICtrlSetData($ApproachButtonY1ID, $Y1[11])
	GUICtrlSetData($ApproachButtonX2ID, $X2[11])
	GUICtrlSetData($ApproachButtonY2ID, $Y2[11])
	GUICtrlSetData($ApproachButtonColorID, $Color[11])
	GUICtrlSetData($DockButtonX1ID, $X1[12])
	GUICtrlSetData($DockButtonY1ID, $Y1[12])
	GUICtrlSetData($DockButtonX2ID, $X2[12])
	GUICtrlSetData($DockButtonY2ID, $Y2[12])
	GUICtrlSetData($DockButtonColorID, $Color[12])
EndFunc   ;==>InitGUI

Func SecondCordSet()
	If $Flag == 1 And WinActive($WindowName) Then
		If $CurIndex <> -1 Then
			Dim $MousePos
			Dim $PosColor
			$MousePos = MouseGetPos()
			$PosColor = PixelGetColor($MousePos[0], $MousePos[1])
			$X2[$CurIndex] = $MousePos[0]
			$Y2[$CurIndex] = $MousePos[1]
			InitGUI()
			_Area()
		EndIf
	 EndIf 
EndFunc   ;==>SecondCordSet

Func SelectRadio()
	Switch @GUI_CtrlId
		Case $MainMenuRadioID
			$CurIndex = 0
		Case $OverViewRadioID
			$CurIndex = 1
		Case $UndockButRadioID
			$CurIndex = 2
		Case $WarpTest1RadioID
			$CurIndex = 3
		Case $LockButRadioID
			$CurIndex = 4
		Case $LockCheckRadioID
			$CurIndex = 5
		Case $CargoFullCheckID
			$CurIndex = 6
		Case $CargoEmptyCheckRadioID
			$CurIndex = 7
		Case $CargoRadioID
			$CurIndex = 8
		Case $AngarRadioID
			$CurIndex = 9
		Case $LogInButtonRadioID
			$CurIndex = 10
		Case $ApproachButtonRadioID
			$CurIndex = 11
		Case $DockButtonRadioID
			$CurIndex = 12
		Case Else
			$CurIndex = -1
	EndSwitch
EndFunc   ;==>SelectRadio

Func StartSet()
	If $Flag == -1 Then
		_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "FirstCordSet")
		_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT, "SecondCordSet")
		WinActivate($WindowName)
		WinWaitActive($WindowName)
		$Flag = 1
		GUICtrlSetData($StartSetButtonID, "Закончить установку")
	Else
		$Flag = -1
		GUICtrlSetData($StartSetButtonID, "Начать установку")
		_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT)
		_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT)
	EndIf
EndFunc   ;==>StartSet

Func StopSet()
	$Flag = -1
	GUICtrlSetData($StartSetButtonID, "Начать установку")
	_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT)
	_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT)
	;WinActivate($MainWindowID)
	GUISetState(@SW_SHOW,       $MainWindowID)
 EndFunc   ;==>StopSet
 
 Func _Area($iTrans=100)
   Local $tmp
Local $iRght = $X2[$CurIndex]
Local $iLeft = $X1[$CurIndex]
Local $iBottom = $Y2[$CurIndex] 
Local $iTop = $Y1[$CurIndex]
	If $iRght<$iLeft Then
		$tmp = $iRght
		$iRght = $iLeft
		$iLeft = $tmp
	EndIf
	If $iTop>$iBottom Then
		$tmp = $iTop
		$iTop = $iBottom
		$iBottom = $tmp
	 EndIf
	 Local $width = $iRght-$iLeft
	  Local $size = $iBottom-$iTop
	Dim $SecondWindowID = GUICreate('Win', $iRght-$iLeft, $iBottom-$iTop, $iLeft, $iTop, BitOR($WS_POPUP,  $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT))	
	 Dim $label[4] = [GUICtrlCreateLabel('', 0, 0, 10, $size), GUICtrlCreateLabel('', 0, 0, $size, 10), GUICtrlCreateLabel('', $size - 10, 0, 10, $size), GUICtrlCreateLabel('', 0, $size - 10, $size, 10)] ; создаем элементы рамки в виде массива - чтобы было удобнее к ним обращаться
    GUICtrlSetResizing($label[0], $GUI_DOCKLEFT + $GUI_DOCKWIDTH) ; задаем стророны к которым нужно "прилепить" элементы если будут меняться размеры окна
    GUICtrlSetResizing($label[1], $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    GUICtrlSetResizing($label[2], $GUI_DOCKRIGHT + $GUI_DOCKWIDTH)
    GUICtrlSetResizing($label[3], $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)    
	 For $i = 0 To 3 ; задаем цвет элементов рамки и свойство, за счет которого можно будет "таскать" окно за эти элементы
        GUICtrlSetBkColor($label[$i], 0x8F0000)    
    Next
    WinSetTrans($SecondWindowID, '',      $iTrans)
    GUISetBkColor(0x0000e,     $SecondWindowID)
    GUISetState(@SW_SHOW,       $SecondWindowID)fr
EndFunc

Вводим название окна в соответствующее поле. Чекбоксом выбираем настраиваемый параметр и понеслось
  • Кнопка «Начать установку»(или хоткей {\}) запускает настройку. На время настройки она меняет название на «Закончить установку»
  • Щелчок правой кнопкой берет цвет под курсором.
  • Перемещение мыши с зажатой левой кнопкой задает границы поиска
  • Нажатие копки «Закончить установку» (либо хоткея{\}) останавливает настройку параметра
  • По закрытию окна происходит заполнение ini файла
Обнаруженные проблемы которые сам не смог решить:
[list type=decimal]
[*]Рисование красивой рамочки
[*]Для отслеживания нажатий кнопок использую (http://autoit-script.ru/index.php/topic,198.0.html UDF в архиве). Но в моем примере события о нажатии кнопок мыши полностью блокируются приложением(собственно из-за этого и введен хот кей). Может кнонибуть знает как можно пробрасывать их далее?
[/list]
Спасибо! Прошу сильно ногами не пинать, я новичек
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Придумай название своей теме, отредактируй свой пост так будто это первый пост твоей темы и я вынесу его наружу в раздел как отдельный тред.
 
Автор
L

LapaM

Новичок
Сообщения
7
Репутация
4
Ok

GUI для заполнения основных переменных бота
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Готово, тему разделил. Как протрезвею отвечу на твои вопросы
91.gif
.
Я конечно не могу претендовать на статус последней инстанции, но таки скажу что имхо работать с цветами и полями поиска по средством мышки - не лучшее решение. Это конечно же намного проще чем вбивать голые числа, но таки человек не обладает такой точностью как машина и бывает прицеливание на нужный пиксель занимает порядка нескольких десятков секунд, в противном случае все приходиться определять приблизительно. Именно поэтому я использую работу с гуи по средством инпут полей а не мыши. Хотя мб у меня и мышь корявая, ибо бывает когда я на минимальном сенсе двигаю ее одним пальчиком в какую либо сторону она бывает не на 1, а на 2-3 пикселя смещается сразу же, это бесед. http://www.youtube.com/watch?v=ngCPORfgi0A .


Добавлено:
Сообщение автоматически объединено:

Ну и самое главное, ты абсолютно правильно поставил вопрос. Сначала поделился тем что есть, описал, а потом уже попросил помощи. Для меня это наиболее правильная формула чтобы я дал максимально развернутый ответ на вопрос
tastey.png
 
Автор
L

LapaM

Новичок
Сообщения
7
Репутация
4
Я использую почти так-же: Сначала с помощью мыши задаю примерную область, а потом немного (если надо) редактирую значения в эдитах. А по закрытию окна происходит считывание из эдитов и запись в файл
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
Func _DrawInterface($ToDo, $LeftTopX, $LeftTopY, $RightBottomX, $RightBottomY)
    Select
        Case $ToDo = "Draw"
            Local $LineCol = 0xFF0000
            If Not $DrawGUI Then  $DrawGUI = GUICreate("", 0, 0, 0, 0, $WS_POPUP)
            If $LeftTopX > $RightBottomX Or $LeftTopY > $RightBottomY Then
                Return
            EndIf
            GUIDelete($DrawGUI)
            $DrawGUI = GUICreate("", 0, 0, 0, 0, $WS_POPUP)
            Global $DrawInterfaceTop = GUICreate("Top Line", $RightBottomX, 2, $LeftTopX, $LeftTopY, $WS_POPUP, -1, $DrawGUI)
            GUISetBkColor($LineCol)
            GUISetState()
            Global $DrawInterfaceLeft = GUICreate("Left Line", 2, $RightBottomY, $LeftTopX, $LeftTopY, $WS_POPUP, -1, $DrawGUI)
            GUISetBkColor($LineCol)
            GUISetState()
            Global $DrawInterfaceRight = GUICreate("Right Line", 2, $RightBottomY, $LeftTopX + $RightBottomX - 2, $LeftTopY, $WS_POPUP, -1, $DrawGUI)
            GUISetBkColor($LineCol)
            GUISetState()
            Global $DrawInterfaceBottom = GUICreate("Bottom Line", $RightBottomX, 2, $LeftTopX, $LeftTopY + $RightBottomY, $WS_POPUP, -1, $DrawGUI)
            GUISetBkColor($LineCol)
            GUISetState()
            WinSetOnTop($DrawInterfaceTop,"",1)
            WinSetOnTop($DrawInterfaceLeft,"",1)
            WinSetOnTop($DrawInterfaceRight,"",1)
            WinSetOnTop($DrawInterfaceBottom,"",1)
    EndSelect
    If WinExists($TarWinName) Then
        Local $pos = WinGetPos($TarWinName)
        Local $size = WinGetClientSize($TarWinName)
        $pos[0] = $pos[0]+($pos[2]-$size[0])/2
        $pos[1] = $pos[1]+$pos[3]-$size[1]-($pos[2]-$size[0])/2
        $LeftTopX = $LeftTopX + $pos[0]-1
        $LeftTopY = $LeftTopY + $pos[1]-1
        $RightBottomX = $RightBottomX + $pos[0] - $LeftTopX+1
        $RightBottomY = $RightBottomY + $pos[1] - $LeftTopY+1
        WinMove($DrawInterfaceTop, "", $LeftTopX+1, $LeftTopY, $RightBottomX, 1)
        WinMove($DrawInterfaceLeft, "", $LeftTopX, $LeftTopY, 1, $RightBottomY)
        WinMove($DrawInterfaceRight, "", $LeftTopX + $RightBottomX, $LeftTopY+1, 1, $RightBottomY)
        WinMove($DrawInterfaceBottom, "", $LeftTopX, $LeftTopY + $RightBottomY, $RightBottomX, 1)
    Else
        MsgBox(0,"_DrawInterface","Не могу найти окно "&$TarWinName)
        SetError(1)
    EndIf
EndFunc
Вот как я рисую рамочки :smile:
 
Автор
L

LapaM

Новичок
Сообщения
7
Репутация
4
Спасибо Бельф за подсказку по первому вопросу.

Сейчас появилось немного времени и я нашел решение второго вопроса. Все как и полагается до дури просто.

Вместо
Код:
MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "FirstCordSet")
надо вызывать
Код:
MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "FirstCordSet",0,0,$HWD)
, где $HWD айдишник окна с EVE.

Нашел в описании к функции из UDF
 
Верх