PDA

Показать полную графическую версию : [решено] Помогите со скриптом для окна InputBox и нажатиями мышкой(см.внутри)


sashadeg
23-02-2009, 11:52
Вот что мне нужно... Если в окне "InputBox" ввести цифру 1 то мышка должна щёлкнуть допустим в координату 300,400 , если ввести цифру 2 то в координату 300,500... НО после ввода значения в первом "InputBox" мышка не сразу идёт в назначеное положение, а открывается второе "InputBox", в котором если введёшь цифру 1 то мышь щёлкнет так же в 300,400 или в 300, 500 (смотря что ввёл в первом "InputBox"), а если введёшь 2 то координаты мышки по оси Y сместится вниз на 10 пикселей (то есть если в первом окне введёшь 1, а в втором окне 2 то мышь щёлкнет в 300,420) Поможете???

beve
23-02-2009, 16:11
Если тебе общий смысл, то вот:
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

Global $x, $y
$hGUI = GUICreate("проба", 189, 62, 193, 182)
$Input_1 = GUICtrlCreateInput("", 0, 24, 89, 32)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
GUICtrlSetLimit($Input_1,1)
$Input_2 = GUICtrlCreateInput("", 93, 22, 89, 32)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
GUICtrlSetLimit($Input_2, 1)
$Label1 = GUICtrlCreateLabel("инпут 1", 8, 0, 60, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("инпут 2", 100, 0, 60, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)


GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
Sleep(10)
WEnd

Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)

Switch $nID
Case $Input_1
Switch $nNotifyCode
Case $EN_UPDATE
Local $sRead_Input = GUICtrlRead($nID)
If $sRead_Input= 1 Then
ControlFocus ( "проба", "", $Input_2 )
$x="300"
$y="400"
Else
If $sRead_Input=2 Then
ControlFocus ( "проба", "", $Input_2 )
$x="300"
$y="500"
EndIf
EndIf
EndSwitch

Case $Input_2
Switch $nNotifyCode
Case $EN_UPDATE
Local $sRead_Input = GUICtrlRead($nID)
If $sRead_Input= 1 Then
MouseClick ( "left" , $x, $y)
Else
If $sRead_Input=2 Then
MouseClick ( "left" , $x, $y+20)
EndIf
EndIf
EndSwitch
EndSwitch
EndFunc


P.S. Пропустил, что тебе нужен не обычный инпут а InputBox. Но в случае с InputBox дела даже очень полегче...
Local $x,$y

$msg=InputBox("инпутбокс", "Введите сообщение.", "")
Switch $msg
Case 1
$x="300"
$y="400"
Case 2
$x="300"
$y="500"
Case else
MsgBox(0,"","не один и ни два")
Exit
EndSwitch

$msg2=InputBox("инпутбокс", "Введите сообщение.", "")
Switch $msg2
Case 1
MouseClick ( "left" , $x, $y)
Case 2
MouseClick ( "left" , $x, $y+20)
Case else
MsgBox(0,"","не один и ни два")
EndSwitch

В коде я использовал Case чтоб ты мог добавить еще альтернативы выбора, если же тебе альтернативы не нужны (например 3, 4, 5) то можна использовать конечно и if.

sashadeg
23-02-2009, 20:12
Спасибо тебе огромное!!! Хотя я ещё не понял что ты тут мне написал, но обязательно разберусь...))) Спасибо за помощь... ХОРОШИЙ У ВАС ТУТ ФОРУМ. Всем Нубам поможете)))))

Да всё изучил... Второй вариант как раз мне и нужен.... Спс ещё и за то что сделали поправку если не введу 1 или 2 )))))




© OSzone.net 2001-2012