Что нового

Мышь, клавиатура Определяем время задержки по указателю мыши MouseGetCursor()

StelS

Новичок
Сообщения
1
Репутация
0
Писал программу по автоматизации процессов в 1С и столкнулся с проблемой определения времени задержки между операциями.
Причина в том, что при вводе лицевого счета, карточка абонента грузится довольно долго. После изменения, даже самого незначительного, запись карточки абонента происходит еще раза в 3-4 дольше, чем открытие. При этом, если одновременно запись производят несколько человек, в разные карточки, то 1С может зависнуть еще на больший срок.

Думал сначала решить эту проблему путем расчета среднего времени задержки через TimerInit() и TimerDiff(), но в последствии получилось найти более элегантное решение.

Во время тестов программы, само ЧУДО заставило меня обратить внимание на то, на что мы уже давно с вами перестали замечать.
А именно на поведение курсора мыши. И действительно, пока 1С находится в стадии зависания, курсор изменяет свой внешний вид, со стрелочки на другой. Вот основываясь на этом изменении и родилась идея определять время задержки между операциями по внешнему виду курсора.

Код:
;~ Определяем задержку по указателю мыши
$k = 1
While 1
    Sleep(50)
    $mgk = MouseGetCursor()
    If $mgk = 2 Then 
        $k += 1
    Else
        $k = 1
    EndIf
    If $k >= 5 Then ExitLoop
WEnd


Практика показала, что этот метод очень надежный. Работает, даже если время задержек между операциями динамически случайным образом изменяется. Также при необходимости надежность алгоритма можно повысить еще больше, достаточно повысить количество наращиваний для переменной $k и увеличив время задержки с 50 на произвольное. В общем алгоритм довольно гибкий. К сожалению подходит только в тех случаях, когда курсор меняет свой внешний вид.

В общем, что я хочу сказать, будьте внимательнее к мелочам, не бойтесь смотреть свежим взглядом на давно опостылевшие вещи, и глядишь не только заметите, как можно оптимизировать алгоритм, но и то, как симпатичная коллега строит вам глазки(ну или кто-то вашей второй половинке). В любом случае замечать даже мельчайшие детали всегда полезно, и стоит стараться делать выводы на основе этих наблюдений.

Поздравляю всех с Весной! Надеюсь эта тема будет кому-то полезна.
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Писал программу по автоматизации процессов в 1С и столкнулся с проблемой определения времени задержки между операциями.
Причина в том, что при вводе лицевого счета, карточка абонента грузится довольно долго. После изменения, даже самого незначительного, запись карточки абонента происходит еще раза в 3-4 дольше, чем открытие. При этом, если одновременно запись производят несколько человек, в разные карточки, то 1С может зависнуть еще на больший срок.

Думал сначала решить эту проблему путем расчета среднего времени задержки через TimerInit() и TimerDiff(), но в последствии получилось найти более элегантное решение.

Во время тестов программы, само ЧУДО заставило меня обратить внимание на то, на что мы уже давно с вами перестали замечать.
А именно на поведение курсора мыши. И действительно, пока 1С находится в стадии зависания, курсор изменяет свой внешний вид, со стрелочки на другой. Вот основываясь на этом изменении и родилась идея определять время задержки между операциями по внешнему виду курсора.

Код:
;~ Определяем задержку по указателю мыши
$k = 1
While 1
    Sleep(50)
    $mgk = MouseGetCursor()
    If $mgk = 2 Then
        $k += 1
    Else
        $k = 1
    EndIf
    If $k >= 5 Then ExitLoop
WEnd


Практика показала, что этот метод очень надежный. Работает, даже если время задержек между операциями динамически случайным образом изменяется. Также при необходимости надежность алгоритма можно повысить еще больше, достаточно повысить количество наращиваний для переменной $k и увеличив время задержки с 50 на произвольное. В общем алгоритм довольно гибкий. К сожалению подходит только в тех случаях, когда курсор меняет свой внешний вид.

В общем, что я хочу сказать, будьте внимательнее к мелочам, не бойтесь смотреть свежим взглядом на давно опостылевшие вещи, и глядишь не только заметите, как можно оптимизировать алгоритм, но и то, как симпатичная коллега строит вам глазки(ну или кто-то вашей второй половинке). В любом случае замечать даже мельчайшие детали всегда полезно, и стоит стараться делать выводы на основе этих наблюдений.

Поздравляю всех с Весной! Надеюсь эта тема будет кому-то полезна.
Но в любом случае при любом дейтсвии в 99% случаев происходит изменении окна, нельзя ли было использовать просто ожидание элемента? Или вы проводите нагрузочное тестирование 1с?
 

Oki

Продвинутый
Сообщения
452
Репутация
62
По ошибке ответ не в ту тему, удалено.
 
Верх