Mouse butonlarını kontrol etmek

Başlatan Zoroaster, 06 Eylül 2017, 13:48:46

Zoroaster

Formumuzun dışını göstermekte olan mouseun butonlarının basılı olup olmadıgını nasıl öğrenirim?

SercanTEK

Hayat sadece bir araçtır amaca ulaşmak için; Amaç ise Hayata birşeyler Katmaktır Benim için.. www.sercanca.com

Klein

Kod Seç

procedure TForm5
.Timer1Timer(SenderTObject);
var 
xy:integer;
begin


	
:= Mouse.CursorPos.X;
	
:= Mouse.CursorPos.y;

	
Caption := IntToStr(x)+ ':' IntToStr(y);

end;


Klein

:) Abi sen butonları sormuşsun, ben koordinat örneği yazmışım.
Birazdan (Delphi açılırsa) yazarım.

Klein

Kod Seç

unit Unit5
;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.ExtCtrlsVcl.StdCtrls;

type
  TForm5 
= class(TForm)
    
Timer1TTimer;
    
Button1TButton;
    
Memo1TMemo;
    
Label1TLabel;
    
procedure FormCreate(SenderTObject);
  private
    { Private 
declarations }
    { Public 
declarations }
  
end;

  
MouseLLHookStruct record
    pt          
TPoint;
    
mouseData   cardinal;
    
flags       cardinal;
    
time        cardinal;
    
dwExtraInfo cardinal;
  
end;

 function 
LowLevelMouseHookProc(nCodewParamlParam integer) : integerstdcall;

var
  
Form5TForm5;
  
mHook cardinal;
implementation

{$R *.dfm}

procedure TForm5.FormCreate(SenderTObject);
const
  
WH_MOUSE_LL 14;
begin

  mHook 
:= SetWindowsHookEx(WH_MOUSE_LL, @LowLevelMouseHookProchInstance0);
end;

function 
LowLevelMouseHookProc(nCodewParamlParam integer) : integerstdcall;
// possible wParam values: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP
var
  
info : ^MouseLLHookStruct absolute lParam;
begin
  result 
:= CallNextHookEx(mHooknCodewParamlParam);
  
with info^ do begin
    Form5
.Label1.Caption := 'X: '+IntToStr(pt.x)+'  Y: 'IntToStr(pt.y);
    case 
wParam of
      wm_lbuttondown 
Form5.Memo1.Lines.Append(format('pressed left button (%d, %d)'    , [pt.xpt.y]));
      
wm_lbuttonup   Form5.Memo1.Lines.Append(format('released left button (%d, %d)'   , [pt.xpt.y]));
      
wm_mbuttondown Form5.Memo1.Lines.Append(format('pressed middle button (%d, %d)'  , [pt.xpt.y]));
      
wm_mbuttonup   Form5.Memo1.Lines.Append(format('released middle button (%d, %d)' , [pt.xpt.y]));
      
wm_rbuttondown Form5.Memo1.Lines.Append(format('pressed right button (%d, %d)'   , [pt.xpt.y]));
      
wm_rbuttonup   Form5.Memo1.Lines.Append(format('released right button (%d, %d)'  , [pt.xpt.y]));
      
wm_mousewheel  begin
        
if smallInt(mouseData shr 16) > 0
        then Form5
.Memo1.Lines.Append('scrolled wheel (up)')
        else 
Form5.Memo1.Lines.Append('scrolled wheel (down)');
      
end;
    
end;
  
end;
end;
end.



Orijinal örnek:
http://lazplanet.blogspot.com.tr/2016/06/how-to-detect-mouse-events-outside-your.html