С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
174 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 304

Как сделать левый клик мыши

12.08.2023, 12:51. Показов 4177. Ответов 7
Метки нет (Все метки)

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

Клик мыши, как сделать?
Нужна просто команда или функция которая бы кликалы мыш в часть экрана где она установлена. Можно ли это сделать? В Интернете нашел...

Как сделать, чтобы клик мыши дублировался?
Как сделать так чтобы клик дублировался? То есть когда я нажал мышкой в координатах x,y , этот Клик повторялся бы в координатах,...

Как сделать чтобы программа делала клик мыши?
Как сделать чтобы программа делала клик мыши? То есть программа, словно юзер, наводит курсор на что-то и кликает. Как навести курсор, я...

7
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
12.08.2023, 14:27
Передать сообщение BM_CLICK с использованием функции SendMessage() или PostMessage() на окно, где вы хотите работать !
0
174 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 304
12.08.2023, 14:28  [ТС]
Можете пожалуйста показать пример
0
 Аватар для Наталья8
519 / 369 / 66
Регистрация: 09.03.2016
Сообщений: 3,908
13.08.2023, 02:19
Вторую клавиатуру подтыкаешь.
Втыкаешь спичку...
Как мышь активировать, наверное с помощью изоленты...

Добавлено через 3 минуты
Когда то писал программу.
VPN вырубалась.
Мышка сама бежала и нажимала куда следует...

Добавлено через 11 минут
C++
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
      TPoint cPt; TRect rect;//--структуры для хранения координат
      int zLinesCount=0;//--Добавлять по четыре <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      BOOL Find_Yes=false;//--нашёл окно
     int z_Liter=0;//-- счётчик количества проходов для ожидания окна
  int CurX; int CurY;    
     //---глобальные переменные
HWND GetMainWindow(HWND hWnd)
{//==========Хитрая функция читать название окна
    while(true) {
        if(GetWindowLong(hWnd, GWL_STYLE) & WS_CAPTION)
            return hWnd;
        if(HWND w = GetParent(hWnd)) {
            hWnd = w;
        } else {
            return hWnd;
        }}}
   //==========находит координаты левого верхнего угла найденной формы,
 //====== прибавляет туда координаты из текста и вызывает нажимать на кнопку
   void trindec(int zLine) { //<< --- zLine строка Memo с названием формы
 char buf[128];
   HWND h = WindowFromPoint(cPt); // получить handle окна по позиции курсора
       GetWindowRect(h,&rect); // получить его координат
 int Hcur = rect.Left+StrToInt(Form1->Memo1->Lines->Strings[zLine+1].Trim());
 int Vcur = rect.Top+StrToInt(Form1->Memo1->Lines->Strings[zLine+2].Trim());
  //------------------
 
  //---------
  if(Form1->Memo1->Lines->Strings[zLine+3]=="right"){ //правое НАЖАТИЕ МЫШЬ
         SetCursorPos(Hcur,Vcur);
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, GetMessageExtraInfo());
       mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, GetMessageExtraInfo());
         } else{                                       //левое НАЖАТИЕ МЫШЬ
         SetCursorPos(Hcur,Vcur);
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
         mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
 if(Form1->Memo1->Lines->Strings[zLine+3]=="double"){
       Sleep(120);                                   // второе НАЖАТИЕ МЫШЬ
        SetCursorPos(Hcur,Vcur);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
         mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
             }}
     zLinesCount=zLinesCount+4;// Sleep(200);//----(Sleep(200) для отладки)
      }
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Form1->Left=0; Form1->Top=0;
Form1->BorderStyle=bsNone;
 Form1->Width = 0; Form1->Height = 0;
 SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
 GetCursorPos(&cPt); // получить текущую позицию курсора
   CurX=cPt.x;CurY=cPt.y;//Запомнил положение курсора
if(FileExists("WinText.txt")){
Memo1->Lines->LoadFromFile("WinText.txt");}
else Application->Terminate();
Timer1->Interval=2000;
}
//------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
String Name_zx = Memo1->Lines->Strings[zLinesCount];
//<<<-----Читает название окна из текста
  //==================
  Find_Yes=false;//---не найдено окно 
      cPt.x=0;
             while(cPt.x < Screen->Width){
 for(cPt.y=0; cPt.y < Screen->Height; cPt.y=cPt.y+30){//<<---шаг вниз
     //----------
     char buf[128];
   HWND h = WindowFromPoint(cPt); // получить handle окна по позиции курсора
                     h = GetMainWindow(h);//======>> Вызов хитрой функции
    GetWindowText(h, buf, 128); // получить текст заголовка окна
    if(String(buf)==""){ZeroMemory(buf,128);buf[0]='_';}//===================
    //---------
                 if(String(buf)==Name_zx){
                          Find_Yes=true;//<<===== нашёл окно
                  //-------
while(String(buf)==Memo1->Lines->Strings[zLinesCount]){//<--ищем верхний край
                    cPt.y--;
     HWND h = WindowFromPoint(cPt); //handle окна по позиции курсора
                    h = GetMainWindow(h);//======>> Вызов хитрой функции
   GetWindowText(h, buf, 128);//  текст заголовка окна
    if(String(buf)==""){ZeroMemory(buf,128);buf[0]='_';}//===================
                    }
                 //-------
                  cPt.y = cPt.y+4;//---четыре точки с верху
       trindec(zLinesCount);//======>> вызов
             cPt.x = Screen->Width;//<<===== (выход из первого цикла while)
           }}
       cPt.x=cPt.x+30; //<<---шаг в право
            }
 //==================
         z_Liter++;//--Количество проходов для ожидания окна
  if(Find_Yes==false && z_Liter==15)//--(15 - пол минуты ожидания)
 {zLinesCount=zLinesCount+4;z_Liter=0;}//<<--если не нашёл ЧИТАЕМ ДАЛЕЕ
 if(Memo1->Lines->Strings[zLinesCount]==""){
    cPt.x=CurX;cPt.y=CurY;//--восстановим положение курсора
     SetCursorPos(cPt.x,cPt.y);
 Application->Terminate();}
}
//--------------------
Добавлено через 5 минут
https://learn.microsoft.com/en... ouse_event
Не уверен, что вам понравиться....

Добавлено через 12 минут
Стреляет проверил. Вам оно надо? Молодой человек....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "windows.h"
 
int _tmain()
{
    while (true){
        mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, GetMessageExtraInfo());
        mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, GetMessageExtraInfo());
    Sleep(10000);
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
    }
    return 0;
    }
Добавлено через 1 минуту
Спроси - А куда это вставить.?
0
13.08.2023, 14:10

Не по теме:

Цитата Сообщение от Наталья8 Посмотреть сообщение
void trindec(int zLine)
На этом моменте уже пригорало? :D

0
13.08.2023, 22:23

Не по теме:

Цитата Сообщение от Laborant666 Посмотреть сообщение
На этом моменте уже пригорало? :D
При работе с WinAPI такое часто бывает XD

0
174 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 304
13.08.2023, 22:43  [ТС]
куда это вставлять

Добавлено через 7 минут
ничего не работает у меня
0
 Аватар для Наталья8
519 / 369 / 66
Регистрация: 09.03.2016
Сообщений: 3,908
14.08.2023, 00:13
Давно это было.
Была болгарская халявная vpn.
Она за бесплатно выключалась каждые полчаса.
Вот двадцатьпять минут, сработал таймер,
и курсор мышки начинал тыкать в экран и на экране искать окно.
(Может сейчас можно было проще сделать.)
Находил окно, узнавал его координаты.
От них отсчитывал коорд. кнопки. Нажимал туда, и снова в режим ожидания.

Добавлено через 6 минут
Цитата Сообщение от gdfgnggf Посмотреть сообщение
ничего не работает у меня
Да ну тебя... Тролль ты определённо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2023, 00:13
Помогаю со студенческими работами здесь

левый клик мышки
Нужно узнать координаты места на сцене, где пользователь кликнул левой кнопкой мыши.

Как поймать клик мыши на панели задач?
Здравствуйте! Первоначально окно расположено в каком-либо углу экрана по нажатию ЛКМ окно сворачивается в пиктограмму, а затем по нажатию...

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

Правый клик мыши работает, как левый клик
Привет, уж очень достает момент, когда на сайтах или на компе нажимаешь на правую кнопки мыши с целью открыть меню\подменю, то почему-то...

Как сделать левый клик на listbox
Подскажите пожалуйста(а лучше пример:)) как сделать левый клик для listbox? (Точнее на запись:)) Искал искал в событиях так и не нашёл:(


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru