Недавние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
Alofa  [?]
Цитировать
Вот именно. И еще если освоил английский.
ну, тут тогда любая справка не поможет если она не переведена :)

Цитировать
Речь тут не о офлайн справке

joiner  [?]
Цитировать
в браузере это ctrl+F
это то же самое что и

Цитировать
В офлайн справке через указатель

я указал на главный глюк ссылок - при случайном обновлении они пропадают. идешь : ссылка\ссылка\ссылка.... и тут всплыло окно либо браузер "мигнул" и начинай заново :)
не все так удобно как кажется, и насчет упорядоченности, то и там и там все удобно. поиск на странице рулит
у меня все :)
22
Если покажете что именно делают FunPatch_1(), func FunPatch_2(), можно будет ответить подробнее.

FunPatch_1(), func FunPatch_2() - выполняют набор стандартных операций. Изменить в реестре ветку, удалить или добавить файл, запустить программу с параметром и т.д.

Зачем эти первые три строки? Зачем лишние переменные? Пиши сразу в массив!!!

Там происходит проверка GUICtrlCreateTreeViewItem, пока не придумал как это сразу записать в массив:

Код: AutoIt [Выделить]
            $patchCheck_1 = BitAND(GUICtrlRead($GUI_Patch_1), $GUI_CHECKED) = $GUI_CHECKED
            $patchCheck_2 = BitAND(GUICtrlRead($GUI_Patch_2), $GUI_CHECKED) = $GUI_CHECKED
            $patchCheck_3 = BitAND(GUICtrlRead($GUI_Patch_3), $GUI_CHECKED) = $GUI_CHECKED


Нет, есть еще кастыльный способ.
Есть функция под названием Execute . Можно написать так:
Код: AutoIt [Выделить]
; если $i = 2 , то это выражение
[autoit]Execute ( "patch_" & $i & "()")
; будет равносильно
patch_2()
; только в цикле переменная будет меняться.


А вот этот костыльный способ, оказался просто идеальным. Всю логику уместил в 2-е строки. Как раз то что искал и даже лучше. Добился полного функционала без "раздувания" кода.

Код: AutoIt [Выделить]
$patchCheck_1 = BitAND(GUICtrlRead($GUI_Patch_0), $GUI_CHECKED) = $GUI_CHECKED ;$i = 0
$patchCheck_2 = BitAND(GUICtrlRead($GUI_Patch_1), $GUI_CHECKED) = $GUI_CHECKED ;$i = 1
$patchCheck_3 = BitAND(GUICtrlRead($GUI_Patch_2), $GUI_CHECKED) = $GUI_CHECKED ;$i = 2

Dim $patch[3] = [$patchCheck_1, $patchCheck_2, $patchCheck_3]

            For $i = 0 To UBound($patch) - 1
    Select
        Case $patch[$i] = True

            Execute ( "FunPatch_" & $i & "()")
            GUICtrlSetState (Execute ( "$GUI_Patch_" & $i), $GUI_UNCHECKED) ;снимает галку с уже установленного патча.

            $patch[$i] = False
    EndSelect
Next

;Не хотелось объединять функции в одну. Мне так проще ориентироваться в коде + менять логику 1 "маленькой" удобней чем 1 "огромной".
;func FunPatch_0()
;func FunPatch_1()
;func FunPatch_2()

23
... Если знаю что искать...
Вот именно. И еще если освоил английский.

... В офлайн справке через указатель. Попробуй...
Речь тут не о офлайн справке и не обо мне.
24
Общие вопросы по AutoIt / ControlSend аналог в WinAPI?
« Последний ответ от eysh Отправлен Июль 17, 2018, 14:01:58 »
Подскажите что то похожее на
Код: AutoIt [Выделить]
в WinAPI?
25
Зачем эти первые три строки? Зачем лишние переменные? Пиши сразу в массив!!!
Одну функцию сделай с параметром, с аргументом!
Код: AutoIt [Выделить]
Func patch ( $i )
    ; что там у тебя,
;установка программ?
    ; сделай такойже массив и также вызывай
    ; или так:
    ; If $i = 1 Then ; делай это
    ; If $i = 2 Then ; или это
EndFunc

Я же в первом сообщении сказал об этом.
Нет, есть еще кастыльный способ.
Есть функция под названием Execute . Можно написать так:
Код: AutoIt [Выделить]
; если $i = 2 , то это выражение
Execute ( "patch_" & $i & "()")
; будет равносильно
patch_2()
; только в цикле переменная будет меняться.

26
Избавиться от FunPatch_1(), func FunPatch_2()
Переписать FunPatch() так, чтобы принимала на вход аргумент:
  Select
        Case $patch[$i] = True
                FunPatch($i)           
            $patch[$i] = False
    EndSelect
Если покажете что именно делают FunPatch_1(), func FunPatch_2(), можно будет ответить подробнее.
27
Спасибо! Массив реально помог сделать код чище и надежней. Может тогда дадите совет как упростить запись внутри case (за основу взял ответ выше):

Код: AutoIt [Выделить]
$patchCheck_1 = True ; i = 0
$patchCheck_2 = False ; i = 1
$patchCheck_3 = True ; i = 2

Dim $patch[3] = [$patchCheck_1, $patchCheck_2, $patchCheck_3]


For $i = 0 To UBound($patch) - 1
    Select
        Case $patch[$i] = True

            #comments-start
            if $i = 0 Then
                FunPatch_1()
            EndIf

            if $i = 1 Then
                FunPatch_2()    Как можно упростить данную конструкцию?
            EndIf

            if $i = 2 Then
                FunPatch_3()
            EndIf
            #comments-end


            $patch[$i] = False
    EndSelect
Next

;func FunPatch_1()
;func FunPatch_2()
;func FunPatch_3()

28
Ссылки в закладках пропадают при обновлении экрана. Это основной глюк почему не пользуюсь. Най ти функцию среди тысячи? Если знаю что искать то в браузере это ctrl+F. Все быстро. В офлайн справке через указатель. Попробуй, очень удобно
29
я не увидел разницы...
Допустим вас интересует функция _WinAPI_CreateDirectory(), ее можно найти в онлайн справке по ссылке "User Defined Function Reference/User Defined Function Reference/" из списка 10000 функций, а можно пройти по дереву ссылок "User Defined Function Reference/WinAPIEx Reference/Files & Devices Reference/Files Management/" - вся и разница.
30
Стол заказов / Re: Нажатие клавиш при изменении цвета пикселя
« Последний ответ от hedji Отправлен Июль 17, 2018, 09:22:06 »
Зачем искать белый цвет, если потом кнопки нажимаются в зависимости от конкретного цвета?

Код: AutoIt [Выделить]
Opt("PixelCoordMode", 2) ;устанавливаем способ отсчета координат
$hWnd = WinGetHandle("Окно игры") ;указываем заголовок окна игры вместо "Окно игры"

If @error Then
    MsgBox(0, "", "Окно игры не найдено, скрипт будет завершен") ;если окно игры не найдено, выходим из скрипта
    Exit
EndIf

While 1

$color = Hex(PixelGetColor(0, 20, $hWnd), 6) ;проверяем цвет в указанной точке

Switch $color
    Case "000d1a"
        Send("0") ;в зависимости от цвета нажимаем нужную кнопку
    Case "00284d"
        Send("1")
    Case "003566"
        Send("2")
    Case "004280"
        Send("3")
    Case "004f99"
        Send("4")
    Case "005cb3"
        Send("5")
    Case "0069cc"
        Send("6")
    Case "0077e6"
        Send("7")
    Case "0084ff"
        Send("8")
    Case "1a90ff"
        Send("9")
    Case Else
EndSwitch

WEnd
 

Страницы: 1 2 [3] 4 5 ... 10