gpt4 book ai didi

c# - 有什么方法可以在不选择它的情况下从另一个程序复制文本吗?

转载 作者:行者123 更新时间:2023-11-30 12:43:42 27 4
gpt4 key购买 nike

我想从其他程序复制文本,在这个程序中 Ctrl+a 被认为是其他命令,我不能使用“SendKeys.SendWait("^a");"选择文本。

有没有办法复制该文本?

最佳答案

你可以用 UIAComWrapper 做到这一点,您将需要该窗口的句柄(从您尝试复制的位置)和有关该元素的信息,您可以从 UIAutomationVerify 获得该信息.

var elementCollection = AutomationElement.FromHandle(windowHandle).FindAll(TreeScope.Subtree, Condition.TrueCondition);
foreach (var item in elementCollection)
{
//check item properties if element is the one you looking for
}

此外,您可以提供更复杂的过滤器以仅获取一个元素,而不是 Condition.TrueCondition

编辑,添加实例:

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
const string InternetExplorerClass = "IEFrame";
static void Main()
{
var windowHandle = new IntPtr(0);

//Find internet explorer instance
windowHandle = FindWindow(InternetExplorerClass, null);

if (!windowHandle.Equals(IntPtr.Zero))
{
//create filter to improve search speed
var localizedControlType = new PropertyCondition(
AutomationElement.LocalizedControlTypeProperty,
"tab item");

//get all elements in internet explorer that match our filter
var elementCollection =
AutomationElement.FromHandle(windowHandle)
.FindAll(TreeScope.Subtree, localizedControlType);

//iterate through search results
foreach (AutomationElement item in elementCollection)
{
Console.WriteLine(item.Current.Name);
}
}
else
{
Console.WriteLine("Internet explorer not found");
}

Console.ReadLine();
}

上面的代码将找到 Internet Explorer 并将所有选项卡标题打印到控制台。我把源码放到GitHub .

关于c# - 有什么方法可以在不选择它的情况下从另一个程序复制文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565929/

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