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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hOOK, ЛОВУШКА НА МЫШЬ, МОЖНО ЛИ БЕЗ DLL? 
:(
    Опции темы
Bogus
  Дата 12.4.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



имеется задача, как запустить определенную процедуру на событие: клик мышкой + смещение курсора на определенное расстояние (после клика). если без HOOKа не обойтись, то можно ли это сделать без библиотеки, т.е одним EXE- файлом. Клик и смещение курсора вне моего приложения.(Т.е. ловушка - глобальная). Чем подробнее, тем я признательнее. Заранее спасибо.


smile
PM MAIL   Вверх
bartram
Дата 12.4.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Bogus @ 12.4.2005, 19:16)
можно ли это сделать без библиотеки, т.е одним EXE- файлом. Клик и смещение курсора вне моего приложения.(

Без dll ни как не получиться, потому что это глобальная ловушка.



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
S.A.P.
Дата 13.4.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Где то тут на форуме давно видел пример без dll ного хука через Direct Input, поищи. Еще как то oleg1973 делал хук, в качестве dll использовал сам exe шник, правда работает это только в XP.
PM MAIL   Вверх
Girder
Дата 13.4.2005, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


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

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



Цитата(Perchilla @ 13.4.2005, 09:07)
Еще как то oleg1973 делал хук, в качестве dll использовал сам exe шник, правда работает это только в XP.
http://forum.vingrad.ru/index.php?showtopi...=0&#entry193106

Это сообщение отредактировал(а) Girder - 13.4.2005, 08:58


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Bogus
Дата 13.4.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



СПасибо, пойду попробую smile
PM MAIL   Вверх
Bogus
Дата 13.4.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Где-то я чего-то не понимаю
Вот что я имею:
Код

unit Unit1;

interface

uses Wintypes, Winprocs, Messages,forms;

function SetHook: Boolean;
function UnHookHook: Boolean;
function HookProc(Code: integer; wParam: Word;
  lParam: Longint): Longint; export; stdcall;


var
  HookedAlready: Boolean;

implementation
 exports
        

HookProc index 1;

var
  ourHook: HHook;



function HookProc(Code: integer; wParam: word;
  lParam: Longint): Longint;
begin
  if (wParam = WM_LBUTTONDOWN) then
    MessageBeep(0);
  result := CallNextHookEx(ourHook, Code, wParam, lParam);
end;

function SetHook: Boolean;
begin
  if HookedAlready then
    exit;


 ourHook := SetWindowsHookEx(WH_MOUSE, HookProc, GetModuleHandle(nil), 0);
 {                         Тута пишет:
[color=red] [Error] Unit1.pas(41): Incompatible types: 'Integer' and 'Word'[/color]

Помогите как для чайника, пожалуйста. Никогда не работал с DLL-ками}

  HookedAlready := True;
end;
function UnHookHook: Boolean;
begin
  UnHookWindowsHookEx(ourHook);
  HookedAlready := False;
end;



end.


И тута: GetModuleHandle(nil), я хотел поиметь Handle своего приложения, я прав?
smile
PM MAIL   Вверх
RA
Дата 13.4.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



Вот мой пример
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=261960

он с dll но dll исключительно для слежения за активной раскладкой, в общем можно и без неё.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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