|
0 / 0 / 0
Регистрация: 19.08.2022
Сообщений: 6
|
||||||
Кликер19.09.2022, 23:24. Показов 5575. Ответов 3
Здравствуйте, можете пожалуйста, помочь в доработке или написании с нуля программы, если так будет легче? с++ или python.
Что должная делать программа. В общем, программа отлавливает сочетание клавиш Ctrl + G. Когда его отловила, то начинает отлавливать нажатие ЛКМ, когда было нажато ЛКМ, то программа начинает кликать. Если было снова нажато ЛКМ, то программа перестает кликать, если же снова было отловлено Ctrl + G, то программа перестает следить за ЛКМ, и мышкой можно спокойно пользоваться.А программа снова отлавливает только Ctrl + G. Вот код:
Импортировал win32api для того, чтобы отслеживать нажатые клавиши. Импортировал pyautogui для того, чтобы кликать. Между кликами есть интервал, который случайно выбирается из множества delay, вот именно для работы с этим импортировал time и random. Переменные flag_mask, flag_click - флаги состояний режимов. Если было отловлено Ctrl + G, то flag_mask становится True, если он до этого был True и программа снова отловит это сочетание клавиш, то этот флаг становиться False. Точно также работает flag_click, только он хранит состояние нажатия, самим пользователем, только ЛКМ. Если флаг стал True, то программа начнет кликать, но когда пользователь снова нажимает ЛКМ, программа перестает кликать. Стоит отметить, что если Ctrl + G было отловлено, когда программа кликала(flag_mask=True, flag_click=True), то flag_mask и flag_click становятся False и программа перестает кликать. delay - множество из которого случайно выбирается число, которое станет паузой между кликом, который сделает программа и кликом, который будет она еще сделает, если пользователь, конечно, не прервет процесс. pause - это переменная, которая случайно принимает одно из значений delay. Эта переменная и станет паузой. t1 и t2 - нужны для таймера, для отмера времени, между кликами, которые делает программа. *1 Программа делает t1 = time.time(), после этого программа, отслеживая сочетания клавиш(Ctrl+G или ЛКМ), параллельно делает t2 = time.time() и если разница t2 - t1 >= pause, то программа кликает и процесс возвращается в точку *1, если пользователь, конечно, не введет какое-либо сочетание клавиш(Ctrl+G или ЛКМ). Функции def check_main_mask(). Функция, которая нужна для отслеживания сочетания клавиш Ctrl + G. Если flag примет значение -127 или -128(в зависимости от того, в какой раз было поймано это сочетание в нечетный или в четный, соответственно), значит было отловлено данное сочетание клавиш(Ctrl+G). Если же, значение флага равно 0 или 1(в зависимости от какой раз до этого момента было поймано это сочетание клавиш в нечетный или в четный, соответственно), значит можно сказать, что пользователь не вводил Ctrl+G. Последняя проверка в коде нужна для того, чтобы выполнялось последнее условие отношений флагов flag_mask и flag_click. def check_click(). Данная функция выполняет такую же роль как и прошлая, только отлавливает ЛКМ, которую нажимает пользователь. Только если flag_click был равен False(т.е. программа не кликала), то данная функция делает флаг True и вызывает функцию if_click(). def if_click(). Данная функция выбирает случайное значение для pause из delay, а также устанавливает t1. Сам цикл В начале цикл отслеживает сочетание клавиш(Ctrl+G). Пока пользователь не нажмет данное сочетание клавиш, мы не сможем пройти первый if. Когда пользователь нажмет Ctrl+G. Программа начнет отлавливать и ЛКМ и Ctrl+G. Если пользователь нажмет ЛКМ(flag_click станет True), то программа войдет во внутренний цикл, который делает клики и параллельно отслеживает сочетания клавиш(ЛКМ и CTRL+G), чтобы программа перестала кликать. Проблематика Во-первых, программа не может точно сразу отловить сочетание клавиш(оно может и сразу словить его, а может нужно будет нажать несколько раз и тогда она его словит).Я специально не использовал time.sleep, а игрался с t2 - t1, т.к. если использовать time.sleep, то поймать сочетания клавиш становится вообще маловероятным. Во-вторых, программа делает очень мало кликов в секунду, всего лишь 10 CPS. Хотя интервалы довольно маленькие. Прошу помощи, можно просто в виде подсказок, какие библиотеки лучше применять и как граматно переписать код. Большое спасибо, что дочитали до этого момента!
0
|
||||||
| 19.09.2022, 23:24 | |
|
Ответы с готовыми решениями:
3
Нужен кликер Кликер |
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|||||||
| 20.09.2022, 22:21 | |||||||
Сообщение было отмечено Tarkel как решение
Решение
Я обычно использую для мониторинга клавиатуры pynput. Эта же библиотека позволяет и управлять мышью/клавиатурой - не нужен будет pyautogui. Попробуйте - может лучше фиксироваться нажатия будут. Но не факт. П.С. Вам точно нужно, чтобы программа работала в фоне, включаясь в активный режим по хоткею? Не лучше ли будет запускать эту программу по необходимости, сразу настроив на срабатывание по нажатию мыши? (например, по нажатию на среднюю кнопку - уж она вряд ли понадобится, пока будет открываться нужное окно) Или если и правда нужно, то не лучше ли будет посадить на нужный хоткей запуск программы непосредственно через системные возможности? Не будут зря ресурсы расходоваться. Добавлено через 22 минуты Код я бы писал примерно так:
2
|
|||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 21.09.2022, 08:09 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 19.08.2022
Сообщений: 6
|
|
| 21.09.2022, 22:40 [ТС] | |
|
Ладно, спасибо большое, что помогли советом, я переписал кликер, поставив его активацию просто на боковую клавишу мыши, без активации щелчком.
0
|
|
| 21.09.2022, 22:40 | |
|
Помогаю со студенческими работами здесь
4
Kivy кликер Кликер на Python Кликер на андроид Кликер на Python 3(не работает) Кликер: не работает кнопка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|