捕获外部程序中TListView控件的鼠标右键点击事件

function HookProc(code:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;
var
  MouseHookStruct: ^TMOUSEHOOKSTRUCT;
  WC: TWinControl;
  classname:
array [0..99] of char;
  i:Integer;
begin
  Result :
= 0;
 
if code < 0 then
    Result :
= CallNextHookEx(NextHook,code,wParam,lParam);
 
case wParam of
    WM_LBUTTONDOWN:
   
begin

   
end;
    WM_LBUTTONUP:
   
begin

   
end;
    WM_LBUTTONDBLCLK:
   
begin

   
end;
    WM_RBUTTONDOWN:
   
begin
      MouseHookStruct :
= Pointer(LParam);
     
//MouseHookStruct.hwnd为所点击组件的句柄,通过它得到它的类名
      GetClassName(MouseHookStruct.hwnd,classname,
100);
     
//如果是TLitView
     
if StrPas(classname) = 'TListView' then
     
begin
       
//获取该组件
        WC :
= TListView(PInteger(Integer(GetWindowLong(MouseHookStruct.hwnd, GWL_WNDPROC)) + 9)^);
       
//循环显示item的Caption
       
for i := 0 to TListView(WC).Items.Count - 1 do
       
begin
          ShowMessage(TListView(WC).Items[i].Caption);
       
end;
     
end;
   
end;
    WM_RBUTTONUP:
   
begin

   
end;
    WM_NCMOUSEMOVE,WM_MOUSEMOVE:
   
begin
     
//给调用者发消息
      SendMessage(CallHandle,MessageID,pMouseHookStruct(lParam)^.hwnd,Integer(@pMouseHookStruct(lParam)^));
   
end;
 
end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值