如何向SysListView32里的某一行发送双击消息 问题如题定位和取内容都可以了 就差这个双击消息不懂怎么发 希望大虾们指点迷津 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var p: TPoint;begin if ListView.Selected <> nil then begin p := ListView.Selected.GetPosition; SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , pos.X + pos.Y shl 16); end;end; 楼上的有笔误。SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , pos.X + pos.Y shl 16);改为SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , p.X + p.Y shl 16);不过我用的不是这种方法,你这种方法最大的缺点是最后一个参数的坐标不容易获取,因为它是外部SysListView32。其实可以发另一个消息就回避了坐标的问题。我以前写过注册表定位,右侧即为SysListView32控件。 你的定位已经可以了,就是你可以得到x,y的坐标了,用以下语句就可以了,procedure MyMouseDBClick;begin mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);end;procedure TForm1.Button1Click(Sender: TObject);begin SetCursorPos(100,200);//x,y MyMouseDBClick;end; 1、填充NMITEMACTIVATE结构,申明部分在CommCtrl单元;2、SendMessage(LV.Handle,WM_Notify,0,@NMITEMACTIVATE);注意:NMITEMACTIVATE结构说明,参考:http://msdn.microsoft.com/en-us/library/bb774771(VS.85).aspx关键是填充结构中的hdr。NMHDR结构,参考:http://msdn.microsoft.com/en-us/library/bb775514(v=VS.85).aspx只要填充hdr.Code := NM_DBLCLK, 发给listview,告诉他双击了某个节点 WM_NOTIFY应该是发给ListView的父窗口. ACCESS查询中如何分段取数字? 请教怎么样在insert into C select ....from a,b语句中加一个变量 插入新记录时如何处理有自动编号的字段 窗体上有四幅图象,单击其中一幅图象时,如何实现在该图象周围画一黄颜色的边框? 简单数据库问题 快来拿分啦! 怎么设置 ListView 内 Item 之间的间隔宽度和高度。 熟悉VB的朋友帮个忙 dbf库 取子串的函数 informix 时间格式问题 源代码从一台机器拷贝到另一台机器上,为什么会出错??? 读取别人图片保存遇到的问题? FastReport的数字预览显示,在界面又不显示。
var
p: TPoint;
begin
if ListView.Selected <> nil then
begin
p := ListView.Selected.GetPosition;
SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , pos.X + pos.Y shl 16);
end;
end;
SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , pos.X + pos.Y shl 16);
改为
SendMessage(ListView.Handle, WM_LBUTTONDBLCLK, MK_LBUTTON , p.X + p.Y shl 16);不过我用的不是这种方法,你这种方法最大的缺点是最后一个参数的坐标不容易获取,因为它是外部SysListView32。其实可以发另一个消息就回避了坐标的问题。我以前写过注册表定位,右侧即为SysListView32控件。
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
SetCursorPos(100,200);//x,y
MyMouseDBClick;
end;
2、SendMessage(LV.Handle,WM_Notify,0,@NMITEMACTIVATE);注意:NMITEMACTIVATE结构说明,参考:http://msdn.microsoft.com/en-us/library/bb774771(VS.85).aspx
关键是填充结构中的hdr。
NMHDR结构,参考:http://msdn.microsoft.com/en-us/library/bb775514(v=VS.85).aspx
只要填充hdr.Code := NM_DBLCLK, 发给listview,告诉他双击了某个节点