我需要从另一个应用程序调用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));
}
}
答案 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);
非常感谢。