Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397

Mouse Click мимо модальной формы

22.03.2023, 09:34. Показов 1933. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как узнать, что пользователь кликнул мышью мимо модальной формы?
События Form_Deactivate и Form_LostFocus не происходят, ведь форма модальная.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2023, 09:34
Ответы с готовыми решениями:

MOUSE (Move, Click, DblClick) in VB????
Думал, что обойду этот вопрос используя встроенные в контролы Control_MouseMove и т.п.,но возникла ситуация, когда контролы не успевают...

Click, dbl click and move mouse
Всем привет! чего я хочу добиться: 1. чтобы при нажатии мыши на область с правой стороны окна и с левой происходили действия void...

Вызов модальной формы из модальной, нужно:закрытие последней и не закрытие первой.
1. Вызываю модальную форму из главной формы (немодальной). 2. Вызываю другую модальную форму из первой (п.1) модальной формы. 3....

26
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 1
22.03.2023, 12:15
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Подскажите, как узнать, что пользователь кликнул мышью мимо модальной формы?
Сделать хук событий мыши и при WM_LBUTTONDOWN сверять координаты мыши с координатами формы. Правда координаты формы (top left) в поинтах, а мыши в пикселях. Соотношение поинтов к пикселям вроде бы 3/4
1
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
22.03.2023, 13:37  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
Правда координаты формы (top left) в поинтах, а мыши в пикселях. Соотношение поинтов к пикселям вроде бы 3/4
Координаты формы в твипах, там соотношение, как правило, 1/15, это всегда можно узнать с помощью Screen.TwipsPerPixelX() и Screen.TwipsPerPixelY().
Неужели нет соответствующего API? Ведь эта функция в системе уже задействована, при клике мимо модальной формы видно (и бывает слышно) соответствующую реакцию.
Кроме того, хорошо бы узнать, ткнули мы в другую форму проекта, или вообще мимо, во втором случае снимается фокус со всего проекта, никакой особой реакции, связанной с модальностью, не ожидается.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
22.03.2023, 19:54
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Неужели нет соответствующего API? Ведь эта функция в системе уже задействована, при клике мимо модальной формы видно (и бывает слышно) соответствующую реакцию.
Модальное окно - это когда родитель у этого окна является Disabled окном, т.е. не может принимать ввод от пользователя. Так что хук - это одно из решений. А если не секрет для чего это нужно? МБ как-то по другому решить.

Добавлено через 28 секунд
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Кроме того, хорошо бы узнать, ткнули мы в другую форму проекта, или вообще мимо, во втором случае снимается фокус со всего проекта, никакой особой реакции, связанной с модальностью, не ожидается.
Есть сообщения WM_ACTIVATE/WM_NCACTIVATE
0
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
22.03.2023, 20:45  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
если не секрет для чего это нужно?
Делаю визуальный редактор к генератору текстур, не хочу применять никаких зависимостей, давно хотел написать свои контролы. В данном случае это меню, выскакивающее по ПКМ но ноде. Я знаю о разных костыльных методах, типа применения скрытой формы с выпадающим меню, но решил сделать свой вариант на модальной форме. А по клику мимо я хочу, чтобы меню закрывалось, так же, как по нажатию Esc (так и ведут себя подобные меню), для этого нужно отследить попытку снятия фокуса.
Можно применить и немодальную форму, но придётся костылить с ожиданием её закрытия.
Windows же как-то отслеживает такое событие, издаёт звук, мигает формой. Вот я и подумал, что это уже в каком-то API решено.
А второй случай мне как раз не нужен, с Activate понятно.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
22.03.2023, 21:23
Mikle Quits, я делал свой комбобокс там стиль WS_EX_TOOLWINDOW | WS_EX_TOPMOST для окна списка. Для отслеживания мыши использовал SetCapture/ReleaseCapture + WM_MOUSELEAVE. В системном комбобоксе при нажатии устанавливается SetCapture у листбокса и чекаются координаты мыши при клике. В WM_CAPTURECHANGED - скрываешь окно.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
26.03.2023, 13:05
Цитата Сообщение от testuser2 Посмотреть сообщение
сверять координаты мыши с координатами формы
Есть же специальная функция которая определяет какое окно находится под указателем мыши. WindowFromPoint называется, довольно часто ей пользуюсь кстати.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
26.03.2023, 14:10
Лучший ответ Сообщение было отмечено Mikle Quits как решение

Решение

А вот и решение:

Первая форма:
Visual Basic
1
2
3
4
5
Option Explicit
 
Private Sub Command1_Click()
    Form2.Show vbModal
End Sub
Вторая форма:
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
Option Explicit
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
 
Private Type POINTAPI
        x As Long
        y As Long
End Type
 
Private Sub Form_Load()
    Hook
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    UnHook
End Sub
 
Public Sub ClickMade()
    Dim mouse As POINTAPI
    Dim TheHandle As Long
    
    GetCursorPos mouse
    TheHandle = WindowFromPoint(mouse.x, mouse.y)
    
    If TheHandle = Form1.hWnd Then
        Print "Произведён клик на первой форме (мимо модальной формы)"
    ElseIf TheHandle <> Me.hWnd Then
        Print "Произведён клик в любой области экрана, кроме модального окна (мимо модальной формы)"
    End If
End Sub
Модуль:
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
Option Explicit
 
Private Type POINTAPI
    x As Long
    y As Long
End Type
 
Private Type MSLLHOOKSTRUCT
    pt As POINTAPI
    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 CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Integer, lParam As Any) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
 
Private Const WH_MOUSE_LL = &HE&
Private Const HC_ACTION = 0
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const WM_RBUTTONDOWN As Long = &H204
 
Dim hMouseHook As Long
 
Public Sub Hook()
    hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
    If hMouseHook = 0 Then MsgBox ("Mouse hook error")
End Sub
 
Public Sub UnHook()
    If hMouseHook Then UnhookWindowsHookEx (hMouseHook): hMouseHook = 0
End Sub
 
' Процедура перехвата сообщений мыши
Private Function LowLevelMouseProc(ByVal uCode As Long, ByVal wParam As Long, lParam As MSLLHOOKSTRUCT) As Long
    If uCode = HC_ACTION Then
        Select Case wParam
            Case WM_LBUTTONDOWN ' Нажатие левой кнопкой мыши
                Form2.ClickMade
                
            Case WM_RBUTTONDOWN ' Нажатие правой кнопкой мыши
                Form2.ClickMade
                
        End Select
    End If
    
    LowLevelMouseProc = CallNextHookEx(hMouseHook, uCode, wParam, lParam)
End Function
Вложения
Тип файла: zip Mouse Click мимо модальной формы.zip (7.0 Кб, 43 просмотров)
2
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 1
26.03.2023, 14:37
Цитата Сообщение от HackerVlad Посмотреть сообщение
Есть же специальная функция которая
Видел такую функцию, можно захукать отдельный элемент в окне, например какой-нибудь оле-объект в Эеселе.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
26.03.2023, 14:56
Цитата Сообщение от testuser2 Посмотреть сообщение
Видел такую функцию
Я тоже, помню, сначала думал самому вычислять координаты окна и проверять вручную находится ли окно под этими координатами, но это очень геморно, особенно если окно является окном нестандартной формы. А функция ведь уже давно написана в API.

Добавлено через 4 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
сверять координаты мыши с координатами формы
Так что смысл изобретать велосипед? Если давно есть функция WindowFromPoint. Ну решение я написал за пол часа. Раньше бы заметил тему, раньше бы ответил.

Добавлено через 12 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
Видел такую функцию, можно захукать отдельный элемент в окне
Я для себя вообще написал программу-баловство для перемещения абсолютно любых элементов/окон мышкой))))
0
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 1
26.03.2023, 15:11
Цитата Сообщение от HackerVlad Посмотреть сообщение
Раньше бы заметил тему, раньше бы ответил.
А чел наверное сам справился, он'ж программист, игры всякие пишет ).
Цитата Сообщение от HackerVlad Посмотреть сообщение
Я для себя вообще написал программу-баловство для перемещения абсолютно любых элементов/окон мышкой))))
Тема интересная и, как мне кажется не очень раскрыта в сообществе VB, в частности использование использование раных флагов в функции SetWindowsHookEx..
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
26.03.2023, 15:14
Цитата Сообщение от testuser2 Посмотреть сообщение
А чел наверное сам справился, он'ж программист, игры всякие пишет ).
Может и справился, но форум же читает много людей, в будущем кому-нибудь это понадобится.
0
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
26.03.2023, 18:41  [ТС]
HackerVlad, благодарю, я действительно уже справился с проблемой.
Расскажу ситуацию чуть подробнее:
Мне нужен обычный выпадающий список с опциями, желательно, чтобы он мог появиться в любом месте и не ограничивался пределами родительской формы, то есть это не контрол.

Вариант с PopupMenu() я сначала забраковал - у меня много разных вариантов списков с опциями, на каждый пункт каждого списка в форме делать свою процедуру-обработчик. Это потом до меня дошло, что можно сделать одно меню с одним пунктом с индексом, динамически строить любое меню, обходиться единственной процедурой-обработчиком. Такой вариант мне уже нравится, сейчас я на нём и остановился, но, повторяю, я не сразу до этого догадался.

У меня была идея - единственная форма, не требующая никаких инициализаций\деинициализаций, без зависимостей и Public сущностей (кроме нужной функции), формирование и вызов меню с возвратом значения - одной строкой. Это получилось, была лишь одна проблема - отлов клика мимо формы, тогда я и спросил тут.
Вариант с хуком сразу предложил The trick, но это ломало изначальную идею простоты, кроме того, я не знаю, как среагируют на хук антивирусы и прочие защитники, которые и так не любят VB6 программы. А ещё, всегда ли хук безопасен во время отладки при остановке и экстренном завершении без UnHook().

Тогда я придумал вариант с немодальной формой. Получилось, только уже с кодом и в форме, и в модуле и с торчащими наружу Public переменными. Зато без проблем обрабатывает потерю фокуса.

Так что я остановился на PopupMenu() с массивом элементов. Если кому интересно - прилагаю варианты с модальной формой (не до конца рабочий) и с немодальной формой (рабочий).
Вложения
Тип файла: zip Menu.zip (6.4 Кб, 24 просмотров)
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
26.03.2023, 19:10
Mikle Quits, с PopupMenu проблема в том что это не список. Там нет к примеру тех же сколлбаров. ПРавильный вариант это окно со стилем WS_EX_TOOLWINDOW | WS_EX_TOPMOST, установкой захвата мыши через SetCapture и отслеживание WM_CAPURECHANGED. Это также можно через 1 модуль (стандартный) сделать. А если тебе и меню устраивает, то форма вообще не нужна, а достаточно вызова TrackPopupMenuEx.
0
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
26.03.2023, 19:17  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
А если тебе и меню устраивает, то форма вообще не нужна, а достаточно вызова TrackPopupMenuEx.
Так и с PopupMenu() тоже ни дополнительные формы, ни модули не нужны.
Скроллбары не понадобятся, там до десятка пунктов по максимуму будет.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
26.03.2023, 19:25
Вот код:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Explicit
 
Private Type POINTAPI
    x   As Long
    y   As Long
End Type
 
Private Const MF_STRING       As Long = &H0&
Private Const MF_SEPARATOR    As Long = &H800&
Private Const TPM_NONOTIFY    As Long = &H80&
Private Const TPM_RETURNCMD   As Long = &H100&
 
Private Declare Function GetCursorPos Lib "user32" ( _
                         ByRef lpPoint As POINTAPI) As Long
Private Declare Function CreatePopupMenu Lib "user32" () As OLE_HANDLE
Private Declare Function DestroyMenu Lib "user32" ( _
                         ByVal hMenu As OLE_HANDLE) As Long
Private Declare Function AppendMenu Lib "user32" _
                         Alias "AppendMenuW" ( _
                         ByVal hMenu As OLE_HANDLE, _
                         ByVal wFlags As Long, _
                         ByVal wIDNewItem As Long, _
                         ByRef lpNewItem As Any) As Long
Private Declare Function TrackPopupMenuEx Lib "user32" ( _
                         ByVal hMenu As OLE_HANDLE, _
                         ByVal un As Long, _
                         ByVal n1 As Long, _
                         ByVal n2 As Long, _
                         ByVal hwnd As OLE_HANDLE, _
                         ByRef lpTPMParams As Any) As Long
 
Private Sub Form_MouseDown( _
            ByRef Button As Integer, _
            ByRef Shift As Integer, _
            ByRef x As Single, _
            ByRef y As Single)
    Dim lIndex  As Long
    
    If Button = vbRightButton Then
    
        lIndex = DisplayMenu()
        
        If lIndex Then
            MsgBox lIndex & " selected"
        End If
        
    End If
    
End Sub
 
Private Function DisplayMenu() As Long
    Dim tPos    As POINTAPI
    Dim hMenu   As OLE_HANDLE
    
    GetCursorPos tPos
    
    hMenu = CreatePopupMenu()
    
    If hMenu = 0 Then Exit Function
    
    AppendMenu hMenu, MF_STRING, 1, ByVal StrPtr("Add")
    AppendMenu hMenu, MF_STRING, 2, ByVal StrPtr("Mul")
    AppendMenu hMenu, MF_STRING, 3, ByVal StrPtr("Max")
    AppendMenu hMenu, MF_SEPARATOR, 0, ByVal 0&
    AppendMenu hMenu, MF_STRING, 4, ByVal StrPtr("Normalize")
    
    DisplayMenu = TrackPopupMenuEx(hMenu, TPM_NONOTIFY Or TPM_RETURNCMD, tPos.x, tPos.y, Me.hwnd, ByVal 0&)
    
    DestroyMenu hMenu
    
End Function
2
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
26.03.2023, 19:37  [ТС]
The trick, да, отличный вариант, благодарю.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
27.03.2023, 01:35
Цитата Сообщение от The trick Посмотреть сообщение
Вот код:
Я лично тоже сам постоянно меню вызываю через API так как можно динамически менять количество пунктов меню, и отсубклассировать можно для добавления картинок ещё))) Меню стандартным VB6 стараюсь никогда не пользоваться))))

Добавлено через 2 минуты
Помню особенно проблему при вызове меню по нажатию правой кнопки мыши в трее. Так VB меню тоже не исчезает при потери фокуса программы. А вот API меню по лучше. Помню отслеживал ещё GetForeGrowndWindow ещё))))) чтобы закрывать меню если не в фокусе))))))))) и такое помню было раньше))))))))))

Добавлено через 5 минут
Единственный минус TrackPopupMenuEx замораживает весь поток процесса твоей программы...

Добавлено через 12 минут
Ещё особенность меню это мешать фокусировки других программ, начиная с Windows 2000 по моему сделали. Никакая другая программа фокус не перетянет на себя. Стандартными методами конечно. Хотя меню отхерачить легко))))

Добавлено через 5 минут
Цитата Сообщение от Mikle Quits Посмотреть сообщение
я не знаю, как среагируют на хук антивирусы
Без хука только проверять по таймеру, а это будет немного нагружать ЦП, но если честно мне вообще плевать на антивирусники, что они там начали уже залупаться на каждому шагу теперь.

Добавлено через 2 минуты
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Вариант с хуком сразу предложил The trick
Нет, вариант с хуком сразу предложил testuser2

Добавлено через 1 минуту
И вообще тема была "Mouse Click мимо модальной формы", а не как вызвать контекстное меню, поэтому я считаю что лучший ответ должен быть у меня, а не у The trick
0
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
27.03.2023, 08:28  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
тема была "Mouse Click мимо модальной формы", а не как вызвать контекстное меню, поэтому я считаю что лучший ответ должен быть у меня
Логично, для "будущих поколений", которые найдут тред через поиск, так полезнее
Переотметил.
Я, кстати, тот ответ не отметил сразу потому, что ждал, что, возможно, есть способ узнать непосредственно об этом событии у системы. Ведь ОС реагирует на это - мигает формой, издаёт звуковой сигнал (если не отключены звуки).
0
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 1
27.03.2023, 11:12
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Я, кстати, тот ответ не отметил сразу потому, что ждал, что, возможно, есть способ узнать непосредственно об этом событии у системы.
Лог из проги spyxx. До 17 строчки сообщени при активации немодального окна, после - при деактивации (сообщения мыши отсеяны).
Кликните здесь для просмотра всего текста
<000001> 000408E6 S WM_WINDOWPOSCHANGING lpwp:0018ED64
<000002> 000408E6 R WM_WINDOWPOSCHANGING
<000003> 000408E6 S WM_ACTIVATEAPP fActive:True dwThreadID:00000000
<000004> 000408E6 R WM_ACTIVATEAPP
<000005> 000408E6 S WM_NCACTIVATE fActive:True
<000006> 000408E6 R WM_NCACTIVATE
<000007> 000408E6 S WM_ACTIVATE fActive:WA_CLICKACTIVE fMinimized:False hwndPreviousnull)
<000008> 000408E6 S WM_IME_SETCONTEXT fSet:1 iShow:C000000F
<000009> 000408E6 S WM_IME_NOTIFY dwCommand:IMN_OPENSTATUSWINDOW dwCommand:00000002 dwData:00000000
<000010> 000408E6 R WM_IME_NOTIFY
<000011> 000408E6 R WM_IME_SETCONTEXT
<000012> 000408E6 S WM_SETFOCUS hwndLoseFocusnull)
<000013> 000408E6 R WM_SETFOCUS
<000014> 000408E6 R WM_ACTIVATE
<000015> 000408E6 P message:0x105A [User-defined:WM_USER+3162] wParam:00000000 lParam:00000000
<000016> 000408E6 S WM_CAPTURECHANGED hwndNewCapture:00000000
<000017> 000408E6 R WM_CAPTURECHANGED

<000018> 000408E6 S WM_NCACTIVATE fActive:False
<000019> 000408E6 R WM_NCACTIVATE fDeactivateOK:True
<000020> 000408E6 S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:False hwndPreviousnull)
<000021> 000408E6 R WM_ACTIVATE
<000022> 000408E6 S WM_ACTIVATEAPP fActive:False dwThreadID:00001380
<000023> 000408E6 R WM_ACTIVATEAPP
<000024> 000408E6 S WM_KILLFOCUS hwndGetFocusnull)
<000025> 000408E6 R WM_KILLFOCUS
<000026> 000408E6 S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<000027> 000408E6 S WM_IME_NOTIFY dwCommand:IMN_CLOSESTATUSWINDOW dwCommand:00000001 dwData:00000000
<000028> 000408E6 R WM_IME_NOTIFY
<000029> 000408E6 R WM_IME_SETCONTEXT

Фактически можно отлавливать допустим WM_NCACTIVATE, с помощью оконного хука, но это наверное как-то не оптимально, ведь сообщений очень много и это опять же хук, т.е. антивирусная "полулегальщина". Но в этом плане интересно, можно ли сделать хук на какое-то отдельное сообщение, типа wmi-синка. Где-то видел даже такой код, где некий "синк" (sync) создается средствами API.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2023, 11:12
Помогаю со студенческими работами здесь

Javascript mouse click
Пытаюсь сделать кое что на PHP + Javascript. Замысел такой что: на экране 2 кубика, например красный и желтый. и есть число point=0...

Mouse Click - Component
Доброго всем времени суток! У меня такая проблема! Не нашел в интернете примера кода который бы проверял ЗАЖАТА! Не Нажата а Зажата, левая...

Работа с Mouse.Click
Привет всем :) Как осуществить нажатие правой кнопкой мыши? В игре? Я пишу Анти-АФК бот и хотелось бы чтобы каждые 30 секунд нажималась...

Excel > click mouse > Telegram
Как создать гиперссылку в Excel, чтобы по клику ПКМ открывалась соответствующая ветка в Telegram. Сам Telegram на компе установлен и...

Не отрабатывается событие - Mouse Click
Из главной формы Form1 - создаю новую Form2 , на которой кнопки ToolStrip. События на click от этих кнопок - то проходят, то нет. На...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru