绕过残疾人选择

时间:2011-10-29 13:32:26

标签: c#

我有一个显示信息的程序(简单文本,但不是在txt框中,看起来像.NET中的标签)但禁用了选择并禁用了鼠标左键和右键。

我想编写另一个程序(比方说C#,但也可以是其他语言)作为用户,并将第一个程序显示的信息写在txt文件中。

有没有办法可以绕过禁用选择,左右键单击?

1 个答案:

答案 0 :(得分:2)

GetWindowText Windows API是您的朋友:

[DllImport("user32.dll", EntryPoint = "GetWindowText", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)]
private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpWindowText, int nMaxCount);

你必须得到其他程序窗口的句柄,然后使用EnumChildWindows在所有子窗口/控件上循环,然后针对所有这些句柄获取调用GetWindowText的文本。在某些情况下,你不会得到预期的结果我猜或可能是某些控件没有暴露句柄。

[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EnumChildWindows(IntPtr window, EnumWindowProc callback, IntPtr i);

有关如何使用EnumChildWindows的详细信息和答案,请参阅此处:

Why is EnumChildWindows skipping children?

还可以查看一些想法和示例...... Why does GetWindowText hang with a "closed" handle but not with a random one