Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 08.07.2010, 22:56   #1
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Вопрос Кликер

Всем привет!
Вот недавно делал кликер --->
----> http://xakni.ucoz.ru/load/moi_progi/..._0_0_1/1-1-0-2
Вот самые главные строчки в нём:
//Находим окно под мышкой
::GetCursorPos(&p);
w=::WindowFromPoint(p);
//Кликаем по нему:
::SendMessage(w, WM_LBUTTONDOWN, MK_LBUTTON, 0); //нажимаем...
::SendMessage(w, WM_LBUTTONUP, 0,0); //...отпускаем
Но проблема в том что прога кликае не по точке (пикселю) а по окну, тоесть мы не сможем кликнуть по крестику у окна чтоб его закрыть. Или он не будет работать в игре.
А как сделать "чистый" кликер, чтоб он щелкал не по укну , а по точке?
Взарание спасибо!
(Offline)
 
Ответить с цитированием
Старый 08.07.2010, 23:33   #2
Kolobok
Оператор ЭВМ
 
Аватар для Kolobok
 
Регистрация: 02.07.2010
Сообщений: 30
Написано 0 полезных сообщений
(для 7 пользователей)
Ответ: Кликер

Не уверен что твой "кликер" будет работать в играх... Ведь во многих играх курсор смещается к какой-то точке каждую миллисекунду...

Я C++ плохо знаю, но думаю искать окно не надо, а просто устанавливать курсор в координаты X, Y и кликать...
(Offline)
 
Ответить с цитированием
Старый 08.07.2010, 23:39   #3
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Вопрос Ответ: Кликер

, а просто устанавливать курсор в координаты X, Y и кликать...

Я вот и спрашиваю - какая функция есть для клика...
Может надо винде, через какую нибуть хитрожопую функцию, передать что мыше отдавили левую лапу...
А вот как это сделать?
(Offline)
 
Ответить с цитированием
Старый 08.07.2010, 23:47   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Кликер

ты вобщето это и делаешь.
но передаешь глобальные координаты, а надо в системе окна.
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 00:19   #5
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Кликер

, а надо в системе окна.
Как так. Но вот я получил хендл нужного мне окна (элемента управления (кнопки, списка ... ) ) а как теперь получить в в системе окна? С помощью какой функции?
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 06:32   #6
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Кликер

Давно писал на Delphi.
Кликает всюду, кликает много.
Вложения
Тип файла: 7z mouseclicker.7z (160.1 Кб, 474 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
den (09.07.2010), Reks888 (09.07.2010)
Старый 09.07.2010, 11:18   #7
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Давно писал на Delphi.
Не, мне надо на С++.

Судя по проекту Randomize, в делфи за клик отвечает это:
Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //нажимаем?
Sleep(1);                                    //ну это ожидание на 1 мс
Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);      //отпускаем?
А есть ли подобная API или MFC функция?

Последний раз редактировалось jimon, 09.07.2010 в 13:22.
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 13:22   #8
jimon
 
Сообщений: n/a
Ответ: Кликер

Den
SendMessage по твоему что делает ? хватит копипастить код, лучше хотя бы пытайся его понять
 
Ответить с цитированием
Старый 09.07.2010, 13:28   #9
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Кликер

SendMessage по твоему что делает ? хватит копипастить код, лучше хотя бы пытайся его понять
jimon во первых этот код я не копипастил, и понимаю
во вторых проблема в другом:
Но проблема в том что прога кликае не по точке (пикселю) а по окну, тоесть мы не сможем кликнуть по крестику у окна чтоб его закрыть. Или он не будет работать в игре.
а в третьих я уже понял что надо делать:
::SetCursorPos(икс, игрик); //устанавливаем мышь куда нибуть
::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // нажимаем...
::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // ...отпускаем
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com