gpt4 book ai didi

c# - 从其他 Windows 应用程序捕获事件

转载 作者:可可西里 更新时间:2023-11-01 10:32:39 26 4
gpt4 key购买 nike

我有一个不是我自己创建的第三方应用程序。我需要创建一个应用程序,它能够监听按钮点击并从该应用程序的表中读取数据。我相信第三方应用程序是用 C# 制作的,但我不确定。有没有办法知道何时按下 UI 按钮并从应用程序中收集数据?我不介意解决方案必须用哪种编程语言编写,只要它能完成上述任务即可。

最佳答案

您可以使用一些 dll,例如 user32.dll,从其他应用程序获取数据。查找窗口的父句柄:

[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 的信息

关于c# - 从其他 Windows 应用程序捕获事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com