Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мыша в windows Vista 
:(
    Опции темы
killernet
Дата 25.8.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 25.8.2008

Репутация: нет
Всего: нет



Здравствуйте. Столкнулся со следующего рода проблемой.надеюсь,тут мне помогут:
Писал под windows xp прогу,которая перемещала в окне игры (lineage2,если кому интересно) курсор мыши и нажимала кнопки.Т.е,после нажатия кнопки в проге активизировася таймер,с интервалом 5 сек,за это время пользователь переключался на окно игры и начинался исполняться код в обработчике таймера.
Реализовал это с помощью ф-ций: SetCursorPos,mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0),mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0). все прекрасно работало,но когда эту же прогу запустили под вистой,работать все перестало.т,е на рабочем столе мышь носится как надо,а в окне игры - ноль эмоций,стоит на месте. думал реализовать это с помощью конструкции:
Код

//юзер наводит курсор на кнопку,опять же фишка с таймером:
GetCursosPos(pt);
//далее жмет какую-нить кнопку,которая выполняет код:
sendmessage(handle_окна_игры,WM_MOUSEMOVE,0,makelparam(pt.x,pt.y));
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
(MOUSEEVENTF_LEFTUP,0,0,0,0);

дело в том,что щелчок не происходит,точнее может и где-то происходит,но не там,где надо,и как оппределить,где он произошел,мне неизвестно. я мог бы в sendmessage указать хэндл непосредственно кнопки,но как я понял,у нее нет хэндла. составил небольшую утилитку для этой цели,чтоб определять хэндл и класс объекта под мышкой.
Код

procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
 aName: array [0..255] of Char;
begin
  hWnd := WindowFromPoint(CrPos);
  Label1.Caption := 'Handle :  ' + IntToStr(hWnd);
  if Boolean(GetClassName(hWnd, aName, 256)) then
   Label2.Caption := 'ClassName :  ' + string(aName)
  else
  Label2.Caption := 'ClassName :  not found';
end;

так вот при наведении мышой на кнопку утилита показывает такойже хэндл,что и у самой формы. жду советов,заранее благодарю.

Это сообщение отредактировал(а) killernet - 25.8.2008, 14:50
PM MAIL   Вверх
Poseidon
Дата 25.8.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Что-то мне кажется, что у линаги будет стоять защита от таких вот "читов". Что бы не программы там играли, а реальные люди.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Exai1e
Дата 25.8.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Цитата(Poseidon @  25.8.2008,  16:36 Найти цитируемый пост)
Что-то мне кажется, что у линаги будет стоять защита от таких вот "читов". Что бы не программы там играли, а реальные люди. 

да защита есть =) но есть бот) который любые функции клиента выполняет), сам както писал подобную ведь то что пишет автор, только я отправлял нажатие клавиши, работало. но под ХP =)

Добавлено через 52 секунды
Цитата(Poseidon @  25.8.2008,  16:36 Найти цитируемый пост)
Что бы не программы там играли, а реальные люди.

кхехе, зайди на официальный сервер) 80% играют так называемых "программ" ;)


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Snowy
Дата 25.8.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Координаты мыши пропиши в mouse_event
Второй параметр - Х, третий Y
И никакой кнопки там нет - она просто нарисована и не может иметь хэндла.
PM MAIL   Вверх
killernet
Дата 25.8.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 25.8.2008

Репутация: нет
Всего: нет



т.е, надо составить конструкцию 
Код

sendmessage(strtoint(edit1.Text),WM_MOUSEMOVE,0,makelparam(pt.X,pt.Y));
mouse_event(MOUSEEVENTF_LEFTDOWN,pt.x,pt.y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,pt.x,pt.y,0,0);

я правильно понял?если да,то у в sendmessage передаются координаты относительно окна,а в Mouse-_event - абсолютные,т.е надо их кодному виду привести как-то? или,если я указал координаты в Mouse_event, sendmessage(...WM_MOUSEMOVE) не нужен?

Это сообщение отредактировал(а) killernet - 25.8.2008, 16:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1309 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.