|
0 / 0 / 0
Регистрация: 19.08.2022
Сообщений: 6
|
||||||
Кликер19.09.2022, 23:24. Показов 5513. Ответов 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(не работает) Кликер: не работает кнопка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|