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

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

PHP код:
var
  
Form1TForm1;
  
wndHWND;
  
bBoolean;

  
procedure RunStopHook(State BooleanWndHWNDstdcall;
  
external 'hackpass.dll' index 1;

implementation

{$R *.dfm}

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

procedure TForm1.FormClose(SenderTObject; var ActionTCloseAction);
begin
if b then RunStopHook(Falsewnd);
end;

end

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

PHP код:
library hackpass;

uses WindowsMessages;
var
 
SysHook HHook 0;
 
Wnd Hwnd 0;
 
hd  HWND 0;

function 
SysMsgProc(code integerwParam word;
lParam longint) : longintstdcall;
begin
 CallNextHookEx
(SysHookCodewParamlParam);
 if 
code HC_ACTION then
  begin
   Wnd 
:= TMsg(Pointer(lParam)^).hwnd;
   if (
TMsg (Pointer (lParam)^).message WM_RBUTTONDOWN) and (Wnd=hdthen
    SendMessage
(WndWM_CANCELMODE00);
    
//НО ВСЕ ТАКИ КОНТЕКСТНОЕ МЕНЮ ОТОБРАЖАЕТСЯ
  
end;
end;

procedure RunStopHook(StateBooleanhHWNDexportstdcall;
begin
if State=true then
 begin
  hd
:=h;
  
SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProcHInstance0);
 
end else
 
begin
  UnhookWindowsHookEx
(SysHook) ;
  
SysHook := 0;
 
end;
end;

exports RunStopHook index 1;
begin
end


НО ВСЕ ТАКИ КОНТЕКСТНОЕ МЕНЮ ОТОБРАЖАЕТСЯ, как можно блокировать это?
Ответить с цитированием