Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.12.2011, 15:23
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию "Блокировка" мыши

Привет форумчане

Нужная программа находится функцией FindWindow. Как можно блокировать нажатие (правой) кнопки мыши именно для этой программы (окна)?
Ответить с цитированием
  #2  
Старый 24.12.2011, 16:21
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я бы делал через Hook. На этом форуме или в гугле полно примеров.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 25.12.2011, 10:40
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию

Bargest, а можно в примерах объяснить?
Ответить с цитированием
  #4  
Старый 25.12.2011, 19:15
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Для этого есть специальные места. Просто мне писать трактаты по полному описанию нет смысла, тем более за меня это уже сделали.
Главный тык
Тык 2
Тык 3
И т.д.
И на delphisources было не раз:
Тык 4
Тык 5
Только не советую "тупо копипастить".
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 25.12.2011 в 19:19.
Ответить с цитированием
  #5  
Старый 27.12.2011, 10:04
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию

Bargest, по книге "Delphi-Глазами хакера" нашел готовый код и изменил его для Калькулятора (результат: в калькуляторе не должна "нажиматься" правая кнопка мыши) так:

PHP код:
var
  
Form1: TForm1;
  
wnd: HWND;
  
b: Boolean;

  
procedure RunStopHook(State : Boolean; Wnd: HWND) stdcall;
  
external 'hackpass.dll' index 1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
wnd
:=FindWindow(nil, 'Calculator');
if 
wnd<>0 then
 begin
  b
:=True;
  
RunStopHook(True, wnd);
  
ShowMessage('Find');
 
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if b then RunStopHook(False, wnd);
end;

end. 

Вот сама библиотека:

PHP код:
library hackpass;

uses Windows, Messages;
var
 
SysHook : HHook = 0;
 
Wnd : Hwnd = 0;
 
hd  : HWND = 0;

function 
SysMsgProc(code : integer; wParam : word;
lParam : longint) : longint; stdcall;
begin
 CallNextHookEx
(SysHook, Code, wParam, lParam);
 if 
code = HC_ACTION then
  begin
   Wnd 
:= TMsg(Pointer(lParam)^).hwnd;
   if (
TMsg (Pointer (lParam)^).message = WM_RBUTTONDOWN) and (Wnd=hd) then
    SendMessage
(Wnd, WM_CANCELMODE, 0, 0);
    
//НО ВСЕ ТАКИ КОНТЕКСТНОЕ МЕНЮ ОТОБРАЖАЕТСЯ
  
end;
end;

procedure RunStopHook(State: Boolean; h: HWND) export; stdcall;
begin
if State=true then
 begin
  hd
:=h;
  
SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0);
 
end else
 
begin
  UnhookWindowsHookEx
(SysHook) ;
  
SysHook := 0;
 
end;
end;

exports RunStopHook index 1;
begin
end
. 

НО ВСЕ ТАКИ КОНТЕКСТНОЕ МЕНЮ ОТОБРАЖАЕТСЯ, как можно блокировать это?
Ответить с цитированием
  #6  
Старый 27.12.2011, 16:29
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я бы сделал иначе. Если окно под мышью - калькулятор, то НЕ вызываем следующий хук (callNextHookEx), иначе вызываем.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2026