Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
 Аватар для Bati4eli
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11

Во время зажатой мыши отправлять клики

19.08.2013, 09:53. Показов 3449. Ответов 13

Студворк — интернет-сервис помощи студентам
Народ помогите, пожалуйста!
Очень нужна такая программулинка, которая перехватывала бы нажатие левой кнопки мыши и пока она нажата, передавала 1000 кликов в минуту системе.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2013, 09:53
Ответы с готовыми решениями:

Клики мыши вне формы
Как можно поймать клик мыши даже если он произошел вне формы?

Перемещение мыши и клики в определенных местах
Вся суть в том что нужно при нажатии клавиши на клавиатуре чтобы мышка перемещалась на определенные координаты совершала щелчок левой...

"Проглатываются" нажатия клавиш или клики мыши
Для примера: форма запускается в невидимом режиме. При нажатии ЛКМ+ПКМ она показывается. Модуль: Public Enum HookFlags ...

13
19.08.2013, 09:59

Не по теме:

А чё, винда тупыми вопросами достаёт?? :)

0
 Аватар для Bati4eli
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11
19.08.2013, 10:07  [ТС]
-DimN-,
нет на самом деле требуется для онлайн стрелялки, при чем не мне одному. Проблема в игре состоит в том, что есть некоторые оружия с высокой скорострельностью, но увы они НЕ автоматические, и приходиться "вручную" очень быстро кликать!
Этот "макрос" (так называются они в игре) очень поможет 39ти людям!
0
 Аватар для DimN
98 / 49 / 0
Регистрация: 14.08.2013
Сообщений: 230
Записей в блоге: 4
19.08.2013, 14:11
Забей в поисковике AutoClicker - получишь массу таких прог...
0
 Аватар для Bati4eli
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11
19.08.2013, 14:18  [ТС]
-DimN-, Я думаю они врятли будут кликать от нажатия до отжатия клавиши. Тем более исходный код тоже ведь интересен.
Кроме этого мне нужно поставить на правую клавишу, чтобы при отжатии посылался правый клик и тоже самое с шифтом.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
19.08.2013, 19:05
Используй Api функцию mouse_event.
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
19.08.2013, 20:34
Цитата Сообщение от The trick Посмотреть сообщение
Используй Api функцию mouse_event.
А подробнее, плз - к какому событию привязаться-то
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.08.2013, 21:24
Цитата Сообщение от morgann55 Посмотреть сообщение
к какому событию привязаться-то
К событию "нажата левая клавиша мыши" Можно по таймеру проверять
Visual Basic
1
2
3
4
5
6
7
8
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Timer1_Timer()
 keyresult = GetAsyncKeyState(1)
    If keyresult = -32768 Then
    Print "[L_DOWN]"
    End If
 
End Sub
Таймер интервал 1

Добавлено через 3 минуты
The trick,
У меня другие сомнения - будет ли mouse_event срабатывать, если зажата физическая кнопка мыши?
Я так быстренько проверил, вроде не работает.
2
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
19.08.2013, 21:45
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У меня другие сомнения - будет ли mouse_event срабатывать, если зажата физическая кнопка мыши?
Скорее всего будет. Вот примерчик, только я особо с константами не проверял.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
 
Private Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 '  left button up
 
Private Sub Timer1_Timer()
    Dim keyresult As Integer, N As Long
    keyresult = GetAsyncKeyState(1)
    If keyresult < -32767 Then
        For N = 0 To 999
            mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
            mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
        Next
    End If
End Sub
2
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.08.2013, 22:07
Цитата Сообщение от The trick Посмотреть сообщение
Вот примерчик,
Так срабатывает, если после клика отпускать кнопку - в цикле 1000 раз. А я то пытался при зажатой кнопке mouse_event использовать (keyresult = -32768), без цикла...
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
19.08.2013, 22:52
Наверно надо посылать клики через Do...Loop с проверкой на ОтпусканиеЛКМ....
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
20.08.2013, 00:06
Между вызовами нажатия и отжатия устанавливать флаг, а после сбрасывать. И проверять статус при отсутствующем флаге.

Добавлено через 44 минуты
Цитата Сообщение от morgann55 Посмотреть сообщение
А подробнее, плз - к какому событию привязаться-то
Можно хук поставить WH_MOUSE_LL, флагом LLMHF_INJECTED проверять, программный или реальных клик
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
20.08.2013, 00:27
Лучший ответ Сообщение было отмечено как решение

Решение

Модуль:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Option Explicit
 
Public Type POINT
    X As Long
    Y As Long
End Type
Public Type MSLLHOOKSTRUCT
    pt As POINT
    mouseData As Long
    flags As Long
    time As Long
    dwExtraInfo As Long
End Type
 
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
 
Private Const HC_ACTION = 0
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
 
Private Const WH_MOUSE_LL = &HE&
Private Const LLMHF_INJECTED = 1
 
Private hHook As Long
 
Public Sub StartHook()
    hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
End Sub
Public Sub StopHook()
    UnhookWindowsHookEx hHook
End Sub
 
Public Function LowLevelMouseProc(ByVal uCode As Long, ByVal wParam As Long, lParam As MSLLHOOKSTRUCT) As Long
    Dim hs As MSLLHOOKSTRUCT
    If uCode = HC_ACTION Then
        If wParam = WM_LBUTTONDOWN Then         ' Нажатие
            CopyMemory hs, ByVal lParam, Len(hs)
            If Not CBool(hs.flags And LLMHF_INJECTED) Then
                Debug.Print "Real MouseDown"
                frmMain.tmrClick.Enabled = True
            End If
        ElseIf wParam = WM_LBUTTONUP Then       ' Отпускание
            CopyMemory hs, ByVal lParam, Len(hs)
            If Not CBool(hs.flags And LLMHF_INJECTED) Then
                Debug.Print "Real MouseUp"
                frmMain.tmrClick.Enabled = False
            End If
        End If
    End If
    LowLevelMouseProc = CallNextHookEx(hHook, uCode, wParam, lParam)
End Function

Форма с таймером:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
 
Private Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 '  left button up
 
Private Sub Form_Load()
    StartHook
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    StopHook
End Sub
 
Private Sub tmrClick_Timer()
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
Вложения
Тип файла: rar LLMouseHook.rar (2.1 Кб, 44 просмотров)
3
 Аватар для Bati4eli
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11
20.08.2013, 16:50  [ТС]
The trick, отлично работает!
Но в откомпилированном виде у меня даже не даёт запуститься.. попробуйте, пожалуйста, на своём компе.. А то мне кажется это из-за системы защиты на моём рабочем компе (по крайней мере SendKeys у меня блокируется на работе).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2013, 16:50
Помогаю со студенческими работами здесь

Клики левой кнопки мыши по таймеру, при зажатой левой кнопке мыши (user32.lib)
Уважаемые форумчане, взорвался мозг. Помогите. Есть одна, по мне, невыполнимая, задача, которую я уже очень долго не могу решить. Мне...

Windows и программы через некоторое время перестают реагировать на клики мыши
по порядку, при включении компьютера все загружается но не работает мышь, вытаскиваю мышь из usb, вставляю обратно, работает. не...

Движение мыши с точки А в точку Б с зажатой правой кнопкой мыши
Здравствуйте, мне нужно сделать программу которая бы плавно перемещала курсор мыши из А в Б причем с зажатой правой кнопкой мыши. С С#...

Двойные клики мыши во всех браузерах, так же если браузер запущен двойные клики происходят во всей ОС
Так же сам по себе открывается explorer

MouseMove при зажатой кнопки мыши
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button ==...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru