各位朋友,想请教一下,小弟现在想通过发送消息的方法来实现“点击”的功能,如何发送一个消息,才能实现点击了ListView里面的第一个ITEM的功能,请各位朋友赐教,谢谢!!!

解决方案 »

  1.   

    有一点需要注明的是,目标程序并不是自己用DELPHI开发出来的程序的,但通过使用SPY++,知道目标程序所使用的类是Tlistview,现在需要点击该Listview里面的第一个ITEM,请各位朋友赐教,衷心感谢!
      

  2.   


    下面是通过消息控制item的选中,这是同一程序中的,如果是其他程序,就需要用findwindow,findwindowex的方法找到listview的句柄
    var
      LvItem: TLVItem;
    begin
      LvItem.mask := LVIF_STATE;
      LvItem.state := LVIS_SELECTED + LVIS_FOCUSED + LVIS_ACTIVATING ;
      LvItem.stateMask := DWord(-1);
      SendMessage(ListView1.Handle, LVM_SETITEMSTATE, 0, Integer(@LvItem));
    end;
      

  3.   

    首先很感谢楼上各位朋友的热心回复,另外,2楼的朋友,小弟经过测试,代码如下,点击按钮之后,会提示“找到”,但就是实现不是点击的功能,请再次赐教,谢谢!!!procedure TForm1.Button1Click(Sender: TObject);
    var
      LvItem: TLVItem;
      h:THandle;
    begin  h := FindWindow(nil, pchar('对方程序的标题'));
    if h>0 then
    ShowMessage('找到');
      LvItem.mask := LVIF_STATE;
      LvItem.state := LVIS_SELECTED + LVIS_FOCUSED + LVIS_ACTIVATING;
      LvItem.stateMask := DWord(-1);
      SendMessage(h, LVM_SETITEMSTATE, 0, Integer(@LvItem));
    end;
      

  4.   

    上面的代码不是用来点击的,只是用来选择的,相当于点选,要实现点击我试过发消息没有成功,不过你可以先找到Item的位置(Commctrl单元里有),找到后用SetCursorPos定位,再用mouse_event模拟点击或者双击
      

  5.   

    把SPY++的消息类型过滤到下再看