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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2009, 06:54   #1
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию Отлов Курсора.

Курсор мыши в ЧУЖОМ приложении меняется с одного на другой и обратно при наведении на какие либо объекты... каким образом это поймать..что он изменился... в ту и в другую сторону.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 03.08.2009, 08:42   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Перехват API. В сети полно информации. Ловим SetCursor.
p.s. и от того что Вы пишите через 2 минуты еще один вопрос ничего не изменится, только хуже станет.

Edit
Да прикольно вы поступили, сначла постим, потом читаем мой пост, и удаляем свой, а потом дурака включаем.

Ответ дан. Еще какие то вопросы ?

Последний раз редактировалось BOBAH13; 03.08.2009 в 15:55.
BOBAH13 вне форума Ответить с цитированием
Старый 03.08.2009, 15:45   #3
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

не понял где и какой вопрос? И через какие 2 минуты?

Порылся в инете пример не нашёл который смог понять.

Накидайте пример если вас это не затруднит.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось Stilet; 04.08.2009 в 09:27.
BARNEY вне форума Ответить с цитированием
Старый 04.08.2009, 09:16   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну да... я долго искал Перехват API Delphi просто название функции замените на SetCursor

Создаете библиотеку эту, а потом экспортируему функцию используите в установке глобального хука GETMESSAGE (требуется для внедрения этой длл во все процессы).

Код:
library mylib;

uses
  Windows, Messages, ShellApi, TlHelp32;

{$R *.RES}

type
  TFarJmp = packed record
    PuhsOp: Byte;
    PushArg: Pointer;
    RetOp: Byte;
  end;
  
var
  AdrShellNotifyIconW: Pointer;
  OldProcW, JmpProcW: TFarJmp;
  NewProcW: Boolean;

function _Shell_NotifyIconW(dwMessage: DWORD; lpData: PNotifyIconDataW): BOOL; stdcall;
var
  Written, CurrentProc: DWord;
begin
  CurrentProc := GetCurrentProcess;
  
  WriteProcessMemory(CurrentProc, AdrShellNotifyIconW, @OldProcW, SizeOf(TFarJmp), Written);
  Result := Shell_NotifyIconW(dwMessage, lpData);
  WriteProcessMemory(CurrentProc, AdrShellNotifyIconW, @JmpProcW, SizeOf(TFarJmp), Written);
end;

procedure InstallHookShellNotifyIcon;
var
  CurrentProc, Written: DWord;
begin
  CurrentProc := GetCurrentProcess;

  // for Unicode
  AdrShellNotifyIconW := GetProcAddress(GetModuleHandle(shell32), 'Shell_NotifyIconW');
  NewProcW := False;

  if Assigned(AdrShellNotifyIconW) then
  begin
    JmpProcW.PuhsOp := $68;
    JmpProcW.PushArg := @_Shell_NotifyIconW;
    JmpProcW.RetOp := $C3;

    NewProcW := ReadProcessMemory(CurrentProc, AdrShellNotifyIconW, @OldProcW, SizeOf(TFarJmp), Written);
    if NewProcW then
      NewProcW := WriteProcessMemory(CurrentProc, AdrShellNotifyIconW, @JmpProcW, SizeOf(TFarJmp), Written);
  end;
end;

procedure UninstallHookShellNotifyIcon;
var
  CurrentProc, Written: DWord;
begin
  CurrentProc := GetCurrentProcess;

  // for Unicode
  if NewProcW then
    WriteProcessMemory(CurrentProc, AdrShellNotifyIconW, @OldProcW, SizeOf(TFarJmp), Written);
end;

function HookProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
begin
  Result := CallNextHookEx(0, code, wparam, lparam);
end;

procedure DLLEntryPoint(dwReason: Integer);
begin

  case dwReason of

    DLL_PROCESS_ATTACH:
    begin
      InstallHookShellNotifyIcon;
    end;

    DLL_PROCESS_DETACH:
    begin
      UninstallHookShellNotifyIcon;
    end;

  end;

end;

exports
  HookProc name 'HookProc';

begin
  DllProc := @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.

Последний раз редактировалось BOBAH13; 04.08.2009 в 09:25.
BOBAH13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отлов ошибок в приложениях Des Работа с сетью в Delphi 9 29.04.2009 15:27
Отлов горячих клавиш, Builder C++ 6.0 MsF C++ Builder 2 24.02.2009 11:02
Отлов событий Antoha Общие вопросы Delphi 3 26.10.2008 10:20
Отлов кликов мыши LAFUDR Помощь студентам 9 24.05.2008 01:32
Sreen Saver отлов событий Alexoid Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 28.04.2008 15:41