Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
1

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

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

Author24 — интернет-сервис помощи студентам
Вся суть в том что нужно при нажатии клавиши на клавиатуре чтобы мышка перемещалась на определенные координаты совершала щелчок левой кнопкой мыши ну а потом еще и нажималась клавиша вверх. Подскажите как указать мышке куда перемещаться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2013, 12:40
Ответы с готовыми решениями:

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

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

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

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

33
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
17.12.2013, 12:48 2
Апи функции SetCursorPos, mouse_event, SendInput
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
17.12.2013, 13:05  [ТС] 3
Это понятно у меня не получается выполнить SetCursorPos. Вероятнее всего я как-то не так задаю функцию.
0
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
17.12.2013, 13:06 4
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  [ТС] 5
Не работает


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
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
17.12.2013, 15:42 6
Лучший ответ Сообщение было отмечено 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  [ТС] 7
О так работает спасибо буду ваять дальше.

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

Добавлено через 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
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
18.12.2013, 17:28 10
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  [ТС] 11
Form1_KeyPress уже исправил

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

Добавлено через 3 минуты
Не понял а что за Case "а". Куда привязывать кнопки?
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
18.12.2013, 20:15 12
Попробуй узнать нужные коды
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  [ТС] 13
Я все равно не могу понять как написать Case так чтоб по нажатию разных клавиш выполнялись разные функции.
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
19.12.2013, 12:18 14
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  [ТС] 15
О! Огромное спасибо очень выручили.

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

Цитата Сообщение от IzhJeka Посмотреть сообщение
Вся суть в том что нужно при нажатии клавиши на клавиатуре чтобы мышка перемещалась на определенные координаты совершала щелчок левой кнопкой мыши
Делал управление курсором с клавиатуры на VB.NET. Использовал RegisterHotKey/UnregisterHotKey для клавиш перемещения курсора и кликов. Не знаю с чем связано, но сделать действия типа перетаскивания таким образом не вышло, правда я и не особо старался. Перемещение и клики работают, естественно.
0
1 / 1 / 1
Регистрация: 17.12.2013
Сообщений: 32
19.12.2013, 15:38  [ТС] 17
А можно с примером кода? а то я так пока не вкуриваю
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
19.12.2013, 15:55 18
Лучший ответ Сообщение было отмечено 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  [ТС] 19
Интересно)))) а проще варианта нет?
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
19.12.2013, 16:55 20
А что тут сложного? Проще не может быть.
0
19.12.2013, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2013, 16:55
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru