1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32

Перемещение мыши и клики в определенных местах

17.12.2013, 12:40. Показов 6589. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вся суть в том что нужно при нажатии клавиши на клавиатуре чтобы мышка перемещалась на определенные координаты совершала щелчок левой кнопкой мыши ну а потом еще и нажималась клавиша вверх. Подскажите как указать мышке куда перемещаться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.12.2013, 12:40
Ответы с готовыми решениями:

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

Во время зажатой мыши отправлять клики
Народ помогите, пожалуйста! Очень нужна такая программулинка, которая перехватывала бы нажатие левой кнопки мыши и пока она нажата,...

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

33
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
17.12.2013, 12:48
Апи функции SetCursorPos, mouse_event, SendInput
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
17.12.2013, 13:05  [ТС]
Это понятно у меня не получается выполнить SetCursorPos. Вероятнее всего я как-то не так задаю функцию.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
17.12.2013, 13:06
Visual Basic
1
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
17.12.2013, 15:40  [ТС]
Не работает


Visual Basic
1
2
3
4
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
 
' Устанавливаем координаты курсора в точку (300, 600)
Call SetCursorPos(300, 600)
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
17.12.2013, 15:42
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от IzhJeka Посмотреть сообщение
Не работает
Ты уверен?
Visual Basic
1
2
3
4
5
Option Explicit
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
    Call SetCursorPos(300, 600)
End Sub
1
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
18.12.2013, 15:24  [ТС]
О так работает спасибо буду ваять дальше.

Добавлено через 23 часа 17 минут
Есть еще один вопрос как запустить comand case по кнопке с клавиатуры. Т.е когда я нажимаю одну кнопку происходит действие а когда другую другое действие. Не могу понять как ему показать нажатия клавы.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
18.12.2013, 15:36
Если имеется форма, то событие KeyDown(Press)
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
18.12.2013, 17:20  [ТС]
А можно пример ато мне не понятно пока просто по команде. Я на Барсике только пару дней пишу.

Добавлено через 2 минуты
А все вроде как начал разбираться спасибо.

Добавлено через 45 минут
Нет так и не заработало((((

Добавлено через 40 минут
Visual Basic
1
2
3
4
5
6
Private Sub KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case KeyUp
MsgBox "фы", 64, "йц"
End Select
End Sub
Добавлено через 1 минуту
Примерно такой код. Что не так?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
18.12.2013, 17:28
Visual Basic
1
2
3
4
5
6
Private Sub KeyPress(KeyAscii As Integer)
Select Case Chr$(KeyAscii)
Case "a"
MsgBox "фы", 64, "йц"
End Select
End Sub
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
18.12.2013, 17:40  [ТС]
Form1_KeyPress уже исправил

Добавлено через 41 секунду
о сейчас попробую

Добавлено через 3 минуты
Не понял а что за Case "а". Куда привязывать кнопки?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
18.12.2013, 20:15
Попробуй узнать нужные коды
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_KeyPress(KeyAscii As Integer)
    MsgBox Chr(KeyAscii) & "   " & KeyAscii
End Sub
 
Private Sub Form_Load()
    KeyPreview = True
End Sub
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
19.12.2013, 10:11  [ТС]
Я все равно не могу понять как написать Case так чтоб по нажатию разных клавиш выполнялись разные функции.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
19.12.2013, 12:18
Visual Basic
1
2
3
4
5
6
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 38
MsgBox "фы", 64, "йц"
End Select
End Sub
1
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
19.12.2013, 13:31  [ТС]
О! Огромное спасибо очень выручили.

Добавлено через 59 минут
Сразу на перспективу задам еще один вопрос. Как заставить программу работать когда окно не активно? А то мне нужно выделять окно другой программы и посылать на нее (на 1) команды с клавиатуры.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
19.12.2013, 14:08
Цитата Сообщение от IzhJeka Посмотреть сообщение
Как заставить программу работать когда окно не активно? А то мне нужно выделять окно другой программы и посылать на нее (на 1) команды с клавиатуры.
Либо вешать хук на клавиатуру, либо использовать RegisterHotKey.

Цитата Сообщение от IzhJeka Посмотреть сообщение
Вся суть в том что нужно при нажатии клавиши на клавиатуре чтобы мышка перемещалась на определенные координаты совершала щелчок левой кнопкой мыши
Делал управление курсором с клавиатуры на VB.NET. Использовал RegisterHotKey/UnregisterHotKey для клавиш перемещения курсора и кликов. Не знаю с чем связано, но сделать действия типа перетаскивания таким образом не вышло, правда я и не особо старался. Перемещение и клики работают, естественно.
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
19.12.2013, 15:38  [ТС]
А можно с примером кода? а то я так пока не вкуриваю
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
19.12.2013, 15:55
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Написал пример таскания своей формы за заголовок.

На форме таймер
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
Option Explicit
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
    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 SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4
    Const MOUSEEVENTF_MIDDLEDOWN = &H20
    Const MOUSEEVENTF_MIDDLEUP = &H40
    Const MOUSEEVENTF_MOVE = &H1
    Const MOUSEEVENTF_ABSOLUTE = &H8000
    Const MOUSEEVENTF_RIGHTDOWN = &H8
    Const MOUSEEVENTF_RIGHTUP = &H10
    
Private Sub Form_Load()
    Timer1.Interval = 100: Timer1.Enabled = True
End Sub
 
Private Sub Timer1_Timer()
       Dim x  As Double, y  As Double
       'Ели нажали клавишу "Ю" (мне так понравилось :))
       If GetAsyncKeyState(190) < 0 Then
            'определяем координаты своего заголовка
            x = (Me.Left + Me.Width / 2) / Screen.TwipsPerPixelX
            y = (Me.Top + 100) / Screen.TwipsPerPixelY
            'устанавливаем курсор на заголовок
            Call SetCursorPos(x, y)
            'нажимаем ЛКМ
            Call mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 1, 1)
            'перемещаем на 20 пикселей вправо
            Call mouse_event(MOUSEEVENTF_MOVE, 20, 0, 1, 1)
            'отпускаем ЛКМ
            Call mouse_event(MOUSEEVENTF_LEFTUP, x, y, 1, 1)
       End If
End Sub
Добавлено через 3 минуты
Конечно, если своё окно неактивно, перемещения формы не будет, но курсор все-равно перемещается(что-то "таскает" )
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
19.12.2013, 16:36  [ТС]
Интересно)))) а проще варианта нет?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
19.12.2013, 16:55
А что тут сложного? Проще не может быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.12.2013, 16:55
Помогаю со студенческими работами здесь

Программное перемещение курсора мыши
Всем привет! У меня тут вопрос.... каким образ можно перемешать курсор мышака программно?

Перемещение Label с помощью мыши
1) Чтобы можно было тоскать по форме один лейбл 2) Чтобы когда я им касался других лейблов выводило что-то вроде ошибки, и желательно...

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

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

Linux не реагирует на клики мыши
Доброе утро, поставил себе Linux Mint, а там какой-то глюк: через какое то время приложения перестают реагировать на клики мышки: курсор...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
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 и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru