C# 如何从windows控件获取文本';什么是文本框?我怎么知道呢';什么是文本框?
我已经使用spy++找到了想要的windows控件的正确句柄,它属于一个独立的应用程序,不受管理。 请注意,spy++“property inspector”提到此窗口没有任何子(或父)窗口 我还使用以下代码获取了窗口的名称:C# 如何从windows控件获取文本';什么是文本框?我怎么知道呢';什么是文本框?,c#,winapi,ui-automation,sendmessage,windows-controls,C#,Winapi,Ui Automation,Sendmessage,Windows Controls,我已经使用spy++找到了想要的windows控件的正确句柄,它属于一个独立的应用程序,不受管理。 请注意,spy++“property inspector”提到此窗口没有任何子(或父)窗口 我还使用以下代码获取了窗口的名称: //the invokes are included aswell const int WM_GETTEXT = 0x000D; static void Main(string[] args) { IntPtr handle
//the invokes are included aswell
const int WM_GETTEXT = 0x000D;
static void Main(string[] args)
{
IntPtr handle = new IntPtr(Convert.ToInt32("00070818", 16));
int nChars = GetWindowTextLength(handle); //win32 function
int length = 200;
StringBuilder sb = new StringBuilder(length);
SendMessage(handle, WM_GETTEXT, length, sb);
Console.WriteLine(sb.ToString());
}
这个窗口比它的标题有更多的信息,这就是我用WM_GETTEXT得到的所有信息(将length的值更改为200没有帮助,无论如何,这是一个很长的过程)
接下来,我尝试了一种使用UI自动化的不同方法:
static void Main(string[] args)
{
AutomationElement target = AutomationElement.FromHandle(handle);
TextPattern textPattern = target.GetCurrentPattern(TextPattern.Pattern) as TextPattern;
}
但我得到了这个错误:
UIAutomationClient.dll中发生类型为“System.InvalidOperationException”的未处理异常
附加信息:不支持的模式
最重要的是,我也尝试过使用Microsoft Inspect.exe,但无论是在UI自动化模式还是MSAA模式下,它都无法关注窗口中的文本
这是否意味着用户界面自动化无法实现数据??还是我应该使用错误的方法/类型 除了使用GetWindowText、WM_GETTEXT或UI automation之外,还有其他方法从该窗口获取数据吗 我对这东西还不太熟悉,但我正在努力学习。此外,我还没有最新的线索,因此任何有用的评论/回答都将不胜感激!! 如果您确实回答了,请确保包含有用的关键字,以便我能够了解有关您的解决方案的更多信息标签(即静态控件)和文本框是具有自己句柄的子窗口,因此Spy++可以看到它们。如果您的目标窗口没有子窗口,那么它不是使用标签或文本框,而是绘制文本本身,您将无法使用
GetWindowText
或WM\u GETTEXT
检索它
文本可能通过屏幕阅读器使用的API公开。用于查看文本是否可访问。这是
System.Windows.Automation
的作业。询问TextPattern
。除了UI自动化和我尝试的第一种方法之外,还有其他可能性吗?它们是两种标准方法。其他可能性取决于应用程序的编写方式。e、 如果它使用GDI,你可以插入一个DLL并截取TextOut函数。但它可能使用的是Direct2D。或者,它可能使用内部库将文本渲染为位图并输出。您需要调试应用程序,找出它是如何输出文本的,并截获它。这并不简单。所以你是说使用“API挂钩”进行调试将帮助我前进??或者您是否引用了其他调试方法?谢谢你的帮助,也很抱歉,你真是个笨蛋。我建议您了解应用程序正在做什么。调试器是一种可能有助于实现这一点的工具。一旦你知道应用程序是如何输出文本的,那么API挂钩可能是拦截它的一种方式。你能说出我可以用来继续搜索答案的任何相关关键字/术语吗??我只是有点被“调试”、“外部应用程序”、“如何”输出“文本”T\T卡住了