如何使用WinApi / user32.dll或类似的方法远程执行ListBox的ListBox1_DoubleClick事件?

时间:2019-08-23 18:25:18

标签: c# winapi user32

我需要从另一个应用程序调用ListBox1_DoubleClick事件。

下面看我认为应该是什么代码:

using System.Runtime.InteropServices;

public class RemoteControl
{
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
    private static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);

    public void SendClickLB(string sWinTitle, int iChildHandler)
    {
        var windowHWnd = FindWindowByCaption(IntPtr.Zero, windowTitle);
        var childWindows = GetChildWindows(windowHWnd);
        IntPtr hWnd = childWindows.ToArray()[index];

        const int WM_LBUTTONDBLCLK = 0x0203;

        SendMessage(hWnd, WM_LBUTTONDBLCLK, new IntPtr(0), new IntPtr(0));
    }
}

1 个答案:

答案 0 :(得分:0)

我能够使用user32.dll远程触发ListBox的DbClick事件。

我用来达到预期结果的步骤如下:

1-首先,我必须使用ClientToScreen(hWnd,参考点)功能通过列表框手柄获取X,Y坐标;

2-在获得坐标后,将鼠标移至所需位置并使用mouse_event函数发送DoubleClick(MouseEventFlag dwFlags,int dx,int dy,int cButtons,int dwExtraInfo);

非常感谢。