Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 11:32   #1
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
Печаль Ошибка при работе с Hook'ом мыши

Только начал разбираться с hook'ами. Не пойму, почему программа вылетает вместе с Delphi как только курсор уходит за пределы окна.
MouseHook.zip
Подскажите, в чем ошибка или хоть в каком направлении рыть. С hook'ом клавы такого не происходит.
Sibedir вне форума Ответить с цитированием
Старый 11.12.2007, 08:58   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну вот, и сам нашел
Читал не внимательно.
Цитата:
Понимание следующего параграфа является ключом для понимания механизма работы ловушек Windows, располагающихся в DLL. Если вы не поймёте его, вернитесь и перечитайте заново и так до тех пор, пока всё не станет ясным.
Наш Process1 устанавливает глобальную ловушку из DLL находящейся в адресном пространстве (АП) нашего процесса (Process1). DLL, находящаяся в АП процесса1 имеет свои данные. Когда система посылает событие, на которое мы установили ловушку, в Process2, то в Process2 отображается код DLL, находящийся в первом процессе (Dll code), НО НЕ ДАННЫЕ ! Все данные, только что отображённой в Process2 DLL, инициализируются заново (т.е. равны 0, nil, False в зависимости от типа). То есть, Process2 знать не знает о существовании Process1, и всё что в нём находится никак не относится к АП первого процесса, из которого произошло отображение кода DLL. В библиотеки, находящиеся не в АП вашего процесса, можно посылать только процессо-независимые данные, такие как, к примеру, дескрипторы окон (под термином "посылка" в данном случае подразумевается использование функций PostMessage() и SendMessage()).
Sibedir вне форума Ответить с цитированием
Старый 11.12.2007, 14:45   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
Восклицание Опять незадача

Казалось бы, вроде разобрался, да чаво там, все по примеру из FAQ сделал. А она не работает. Вот исходники:
MouseHook1.zip
Вот какая штука, заменяю в библиотеке код
Код:
function GlobalMouseHook (Code: Integer; wParam: Integer; lParam: Integer): LongWord;
begin
  if (Code >= 0) then begin
    case TMsg (Pointer (lParam)^).message of
      WM_MOUSEMOVE:
        TMsg (Pointer (lParam)^).message := WM_NULL;
      else
        Result := CallNextHookEx (MouseHook, Code, wParam, lparam);
    end;
  end;
end;
на
Код:
function GlobalMouseHook (Code: Integer; wParam: Integer; lParam: Integer): LongWord;
begin
  if (Code >= 0) then begin
    MessageBeep (0);
    Result := CallNextHookEx (MouseHook, Code, wParam, lparam);
  end;
end;
Пищит за милую душу. А если как во вложении делаю, вообще хук теряет.

Подсткажите люди добрые, век помнить буду.
Sibedir вне форума Ответить с цитированием
Старый 12.12.2007, 05:45   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Еще раз поднимаю вопрос.
Протестируйте прогу пожалуйста. Что не так?
Тема для самостоятельного изучения не самая простая. Материала ни так и много. Я и книги читал и FAQ и форумы. Не понял. Везде примеры с клавой, с буфетом и т.д., а с движением мыши нету.
Sibedir вне форума Ответить с цитированием
Старый 12.12.2007, 06:30   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Если хоть комуто интересно, отпишитесь, даже если ни чего не получается. Я буду знать что тема в рассмотрении. Если нет - тему в баню (наверное очень сложный вопрос )
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с потоками vitalik007 Общие вопросы Delphi 6 09.03.2008 09:25
Ошибка при работе с структурой Nullator Общие вопросы C/C++ 11 07.03.2008 23:52
Ошибка при работе с файлом LeoN Общие вопросы Delphi 1 07.12.2007 15:21
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 15:10