C# 从其他windows应用程序捕获事件
我有一个不是我自己创建的第三方应用程序。我需要创建一个应用程序,它能够监听按钮点击并从该应用程序中的表中读取数据。我相信第三方的申请是用C#写的,但我不确定。是否有办法知道何时按下UI按钮并从应用程序中获取数据?我不介意解决方案必须使用哪种编程语言编写,只要它能够完成上述任务。您可以使用一些dll(如user32.dll)从其他应用程序获取数据。 查找窗口的父句柄:C# 从其他windows应用程序捕获事件,c#,windows,C#,Windows,我有一个不是我自己创建的第三方应用程序。我需要创建一个应用程序,它能够监听按钮点击并从该应用程序中的表中读取数据。我相信第三方的申请是用C#写的,但我不确定。是否有办法知道何时按下UI按钮并从应用程序中获取数据?我不介意解决方案必须使用哪种编程语言编写,只要它能够完成上述任务。您可以使用一些dll(如user32.dll)从其他应用程序获取数据。 查找窗口的父句柄: [DllImport("user32.dll", SetLastError = true)] static extern IntP
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
public static IntPtr FindWindow(string windowName)
{
var hWnd = FindWindow(windowName, null);
return hWnd;
}
然后,找到子窗口的句柄
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
private IntPtr FindSomeElement(IntPtr parent)
{
IntPtr childHandle;
childHandle = FindWindowEx(
parent,
IntPtr.Zero,
"WindowsForms10.EDIT.app21",
IntPtr.Zero);
return childHandle;}
并从中获取文本:
private static string GetText(IntPtr childHandle)
{
const uint WM_GETTEXTLENGTH = 0x000E;
const uint WM_GETTEXT = 0x000D;
var length = (int)SendMessage(handle, WM_GETTEXTLENGTH, IntPtr.Zero, null);
var sb = new StringBuilder(length + 1);
SendMessage(handle, WM_GETTEXT, (IntPtr)sb.Capacity, sb);
return sb.ToString();
}
//我没有测试这段代码,只是给出了一个想法。
有关更多信息,请访问www.pinvoke.net/default.aspx/。你可以找到很多关于user32.dll的信息,你可以访问其他应用程序源代码吗?不,它是从internet下载的,我正在尝试创建一种界面,以更清晰地显示该应用程序中的数据,在第三方软件中按下按钮时执行操作。SPY++还可以帮助您获取元素类名或主窗口类名。这是用什么语言编写的?@JPadley,是c#您能提供任何教程的链接吗?@JPadley以及谷歌上的更多内容。