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

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

19.08.2013, 09:53. Показов 3525. Ответов 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
20.08.2013, 00:06
Между вызовами нажатия и отжатия устанавливать флаг, а после сбрасывать. И проверять статус при отсутствующем флаге.

Добавлено через 44 минуты
Цитата Сообщение от morgann55 Посмотреть сообщение
А подробнее, плз - к какому событию привязаться-то
Можно хук поставить WH_MOUSE_LL, флагом LLMHF_INJECTED проверять, программный или реальных клик
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru