【发布时间】:2019-12-29 01:50:52
【问题描述】:
我需要从另一个应用程序调用 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));
}
}
【问题讨论】:
-
嗨@EdPlunkett,非常感谢您的帮助。我已经在使用 ListBox 处理程序,至于在参数 lParam 中发送坐标,我将看到如何做到这一点。但是使用 WM_LBUTTONDBLCLK 它还没有工作。
-
这可能不是很好的建议。使用 UI 自动化。
-
@EdPlunkett,我可以获取 ListBox 处理程序,我什至可以使用 LB_GETTEXT 获取 Item 的文本,但是 ListBox 事件我仍然不知道如何触发它们。
-
谢谢,伙计们,我会尽快研究 UI 自动化并利用它来解决我的问题。非常感谢你。