我想复制其他程序中的文字, 在这个程序中,Ctrl + a被认为是其他命令,我不能使用“SendKeys.SendWait(”^ a“);”选择文字。
有没有办法复制该文字?
答案 0 :(得分:1)
您可以使用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。
答案 1 :(得分:0)
这是什么类型的编辑器,为什么你不能获得源文件?也许这会奏效: 1.将光标放在第一行的开头 2.按Ctrl + Shift + End 3. Ctrl + C
或者,您可以尝试通过Windows Input Simulator library
模拟键盘输入