如何向SysListView32里的某一行发送双击消息

lvdeye 2010-07-05 05:07:19
问题如题
定位和取内容都可以了 就差这个双击消息不懂怎么发 希望大虾们指点迷津
...全文
636 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvdeye 2010-12-08
  • 打赏
  • 举报
回复
好久没来了~~
金卯刀 2010-07-14
  • 打赏
  • 举报
回复
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,告诉他双击了某个节点
ccrun.com 2010-07-14
  • 打赏
  • 举报
回复
WM_NOTIFY应该是发给ListView的父窗口.
无条件为你 2010-07-13
  • 打赏
  • 举报
回复
楼上的方法最差劲。在窗口最小化时根本发不了。
楼主好像消失了,有段时间没见了,我的方法不同上述任何一种方法,需要你加分后给你提供。
无条件为你 2010-07-06
  • 打赏
  • 举报
回复
你只要连续一周内登录论坛回别的人贴子,你都可以挣到100分以上。你发100分的贴子,结贴系统又返回你50分,实际你只付出50分。

你发35分的贴子,结贴返回17分给你,而你发贴的还可以得到10分奖励,因此你给35分等于只付出8分。你可以看你的可用分变更里面,是不是我所说的这样。


  另外有一点,很多人有个误区,认为别人发300分的贴子,并结贴给你300分,你就可以得到300分的可用分了,这是错误的,实际上你并没有得到300分,最多在下周可以得到40分。这是目前论坛规定,可以很好的防止别人多注册帐号来乱倒分。

  专家分和可用分是两个不同的概念。结贴得到的只是专家分,有助于升级,但并不能增加可用分。由于回贴得到的分有助于快速升级,所以这也正是技术区不允许发布散分贴子的原因。

  基于此,无论你技术高低,只要经常上论坛发贴,那么你就会有很多分,你就会富有。别人技术比你高,但回贴数量没你多,那么他只是等级会比你高,但可用分会低于你。

所以,说自己没分的理由不成立。没分,是自己不勤上论坛导致,而并不是技术低导致。
我也不是不通情理之人,你留下QQ,我帮你解决下是可以的。但你说自己没分绝对不是理由。
Jekhn 2010-07-06
  • 打赏
  • 举报
回复
你的定位已经可以了,就是你可以得到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;
无条件为你 2010-07-06
  • 打赏
  • 举报
回复
楼上的有笔误。
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控件。
亮剑_ 2010-07-06
  • 打赏
  • 举报
回复

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;
lvdeye 2010-07-05
  • 打赏
  • 举报
回复
要加多少分呢?我没多少分啊 就剩35了 我不懂赚分。。 大哥球球你了 我把所有分都拿出来
无条件为你 2010-07-05
  • 打赏
  • 举报
回复
可以成功发送,你贴子加分后我给你贴代码。你给这点分实在太吝啬了。
Jekhn 2010-07-05
  • 打赏
  • 举报
回复
用mouse_event吧

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧