|
08.07.2010, 22:56
|
#1
|
Дэвелопер
Регистрация: 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
|
Оператор ЭВМ
Регистрация: 02.07.2010
Сообщений: 30
Написано 0 полезных сообщений (для 7 пользователей)
|
Ответ: Кликер
Не уверен что твой "кликер" будет работать в играх... Ведь во многих играх курсор смещается к какой-то точке каждую миллисекунду...
Я C++ плохо знаю, но думаю искать окно не надо, а просто устанавливать курсор в координаты X, Y и кликать...
|
(Offline)
|
|
08.07.2010, 23:39
|
#3
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Кликер
, а просто устанавливать курсор в координаты X, Y и кликать...
|
Я вот и спрашиваю - какая функция есть для клика...
Может надо винде, через какую нибуть хитрожопую функцию, передать что мыше отдавили левую лапу...
А вот как это сделать?
|
(Offline)
|
|
08.07.2010, 23:47
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Кликер
ты вобщето это и делаешь.
но передаешь глобальные координаты, а надо в системе окна.
|
(Offline)
|
|
09.07.2010, 00:19
|
#5
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Кликер
Как так. Но вот я получил хендл нужного мне окна (элемента управления (кнопки, списка ... ) ) а как теперь получить в в системе окна? С помощью какой функции?
|
(Offline)
|
|
09.07.2010, 06:32
|
#6
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Кликер
Давно писал на Delphi.
Кликает всюду, кликает много.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
09.07.2010, 11:18
|
#7
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Не, мне надо на С++.
Судя по проекту 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
|
|
Ответ: Кликер
Den
SendMessage по твоему что делает ? хватит копипастить код, лучше хотя бы пытайся его понять
|
|
|
09.07.2010, 13:28
|
#9
|
Дэвелопер
Регистрация: 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)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:32.
|