绕过禁用的选择

本文关键字:选择 | 更新日期: 2023-09-27 18:12:49

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

我想写另一个程序(假设是c#,但也可以是其他语言),它作为一个用户,并将第一个程序显示的信息记录在txt文件中。

有一种方法,我可以得到周围禁用选择,鼠标左键和右键点击?

绕过禁用的选择

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的详细信息和答案,请参阅此处:

为什么EnumChildWindows跳过孩子?

也看看这里的一些想法和例子…为什么GetWindowText挂起"关闭"处理但不使用随机的