外部程序有个 listbox, 我现在已经取得了该listbox得窗口句柄, 在c# 程序中 想通过sendmessage来双击 listbox中得 第三条记录, 在c#中如何做呢, 双击事件是 LBN_DBCLCK 关键是如何在c#中定义 sendmessage , 包括参数说明哈

解决方案 »

  1.   

    [DllImport("user32")]
    public static extern int SendMessage(IntPtr handle,int msg,int wParam,int lParam);
    handle就是句柄
    msg就是LBN_DBCLCK
    wParam好像没什么用,设成0或1都可以
    lParam是坐标,应该是x*256+y表示的,但是双击一般都不关心坐标,设成0就行了
      

  2.   

    哦,你要双击第3项啊?
    那你要找到一个点,使得这个点落在第3项
    比如这个点的坐标是(x,y)
    就把x*256+y作为SendMessage的第4个参数(如果不行,就x+y*256,我记不清了)
      

  3.   

    我都快放弃了, 刚才看到大家的回复,谢谢大家
    难道不支持 通过listbox项双击吗?
      

  4.   

    我就想实现 选中 listbox中的某一项, 你有办法吗? 
      

  5.   

    支持双击没问题,但你要双击ListBox的第三项的话,可以重写ListBox的消息循环,在里面加以判断就行了另一方法
    用模拟鼠标按键        
    [DllImport("user32.dll")]
            static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
    获取控件尺寸
    [DllImport("user32.dll")]
            static extern bool GetWindowRect(HandleRef hwnd, out NativeRECT rect);
    设置当前鼠标指针位置
    [DllImport("user32.dll")]
            static extern bool SetCursorPos(int X, int Y);