我有一个显示信息的程序(简单文本,但不是在txt框中,看起来像.NET中的标签)但禁用了选择并禁用了鼠标左键和右键。
我想编写另一个程序(比方说C#,但也可以是其他语言)作为用户,并将第一个程序显示的信息写在txt文件中。
有没有办法可以绕过禁用选择,左右键单击?
答案 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