Что нового

Как оформить скрипт с помощью элементов GUI

pixtachek

Новичок
Сообщения
29
Репутация
0
Версия : 3.3.6.1
Описание:
Помогите оформить этот скрипт с помощью элементов GUI
Код:
$sChat = 'TEXT'

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

If @error Then Exit
$aWinList = WinList('World of Warcraft')
$pid = WinGetProcess("World of Warcraft")

For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep(1000)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        ControlSend($aWinList[$i][1], '', '', $sChat, 1)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        sleep(10000)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        ControlSend($aWinList[$i][1], '', '', $sChat, 1)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        sleep(10000)
        Sleep(1000)


Мне бы чтоб GUI отображал строку для в ввода текса ,которая будет менять

Код:
$sChat = 'TEXT'

И

Код:
sleep(delay)

Хоть идейку подскажите каким образом это сделать...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

$aData = _GetData_GUI()

If Not @error Then
	ConsoleWrite("Text: " & $aData[0] & @LF)
	ConsoleWrite("Delay: " & $aData[1] & @LF)
EndIf

Func _GetData_GUI()
	Local $hGUI, $nText_Input, $nDelay_Input
	
	$hGUI = GUICreate("Input", 300, 200)
	
	GUICtrlCreateLabel("Text:", 20, 23)
	$nText_Input = GUICtrlCreateInput("TEXT", 20, 40, 260, 20)
	GUICtrlCreateLabel("Delay:", 20, 103)
	$nDelay_Input = GUICtrlCreateInput("1000", 20, 120, 260, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_NUMBER))
	
	$nOk_Button = GUICtrlCreateButton("Ok", 20, 170, 60, 20)
	
	GUISetState(@SW_SHOW, $hGUI)
	
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				GUIDelete($hGUI)
				Return SetError(1, 0, 0)
			Case $nOk_Button
				Local $aRet[2] = [GUICtrlRead($nText_Input), GUICtrlRead($nDelay_Input)]
				GUIDelete($hGUI)
				Return $aRet
		EndSwitch
	WEnd
EndFunc
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Всё эт конечно хорошо, а чтоб ещё бы он выполнял этот скрипт.
Код:
$sChat  = 'текст'

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

If @error Then Exit
$aWinList = WinList('World of Warcraft')
$pid = WinGetProcess("World of Warcraft")

For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep(1000)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        ControlSend($aWinList[$i][1], '', '', $sChat, 1)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        sleep(10000) 
        ExitLoop
    EndIf
   
Next


Если это конечно возможно.
 

spider_xr

Знающий
Сообщения
14
Репутация
7
папробуй так (знаю грубо и некрасиво но мне на работу через 5 часов надо паспать ))
кстати предыдущий метод от CreatoR проще только окно будет пропадать после нажатия на "ок" и при новом тексте нужно будет перезапускть скрипт (вообщем выбирай)
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>

$Form1_1 = GUICreate("Form1", 360, 120, 192, 114)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 337, 57, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN))
GUICtrlSetLimit($Edit1, 200)
GUICtrlSetData($Edit1, "Text")
$Button1 = GUICtrlCreateButton("start", 208, 80, 75, 25)
$Input1 = GUICtrlCreateInput("1000", 80, 80, 89, 21, BitOR($ES_RIGHT,$ES_NUMBER))
GUICtrlSetLimit($Input1, 8)
GUICtrlCreateLabel("Delay", 40, 88, 31, 17)
GUISetState()

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

If @error Then Exit
$aWinList = WinList('World of Warcraft')
$pid = WinGetProcess("World of Warcraft")

do
	$nMsg = GUIGetMsg()
	
	if $nMsg = $Button1 Then
		GUICtrlSetData($Button1, "stop")
		$sChat = GUICtrlRead($Edit1)
		$delay = GUICtrlRead($Input1)
		While 1
		For $i = 1 To $aWinList[0][0] Step +1
			If WinGetProcess($aWinList[$i][1]) = $Pid Then
				ControlSend($aWinList[$i][1], '', '', '{Enter}')
				ControlSend($aWinList[$i][1], '', '', $sChat, 1)
				ControlSend($aWinList[$i][1], '', '', '{Enter}')
			EndIf
		Next
		
		for $a = 1 to $delay Step 10
			$n = GUIGetMsg()
			
			if $n = $GUI_EVENT_CLOSE Then
				Exit
			EndIf
		
			if $n = $Button1 Then
				GUICtrlSetData($Button1, "start")
				ExitLoop 2
			EndIf
		Next
		WEnd
	EndIf

until $nMsg = $GUI_EVENT_CLOSE
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
pixtachek [?]
чтоб ещё бы он выполнял этот скрипт
Что значит выполнял, добавьте функцию и используйте её:

Код:
$aData = _GetData_GUI()
If @error Then Exit

$sChat  = $aData[0]
$iDelay = $aData[1]

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

$aWinList = WinList('World of Warcraft')
$pid = WinGetProcess("World of Warcraft")

For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep($iDelay)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        ControlSend($aWinList[$i][1], '', '', $sChat, 1)
        ControlSend($aWinList[$i][1], '', '', '{Enter}')
        Sleep($iDelay)
        ExitLoop
    EndIf
Next

Func _GetData_GUI()
    Local $hGUI, $nText_Input, $nDelay_Input
    
    $hGUI = GUICreate("Input", 300, 200)
    
    GUICtrlCreateLabel("Text:", 20, 23)
    $nText_Input = GUICtrlCreateInput("TEXT", 20, 40, 260, 20)
    GUICtrlCreateLabel("Delay:", 20, 103)
    $nDelay_Input = GUICtrlCreateInput("1000", 20, 120, 260, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_NUMBER))
    
    $nOk_Button = GUICtrlCreateButton("Ok", 20, 170, 60, 20)
    
    GUISetState(@SW_SHOW, $hGUI)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                GUIDelete($hGUI)
                Return SetError(1, 0, 0)
            Case $nOk_Button
                Local $aRet[2] = [GUICtrlRead($nText_Input), GUICtrlRead($nDelay_Input)]
                GUIDelete($hGUI)
                Return $aRet
        EndSwitch
    WEnd
EndFunc


Вам идея нужна была, а тут готовый скрипт, дерзайте :beer:.
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Спасибо большое за помощь :IL_AutoIt_1:!
 
Верх