我正在使用SendKeys.SendWait()在窗口之间来回复制和粘贴文本。我编写了一种复制粘贴方法,该方法使用FindWindow
SetForegroundWindow
和"User32.dll"
方法
大多数时候,在我的设备上,该方法都能正常工作。但是,在不同设备上运行时,这是非常不一致的。所有设备都使用相同的操作系统,并打开大约相同的应用程序。
有时,该方法粘贴错误的文本(来自先前的副本),有时该方法根本不起作用。
我确保使用documentation中所述的新SendKeys.SendWait()
实现。
我也尝试过在复制和粘贴功能之间放置一个睡眠功能。除了使输出变慢之外,这似乎不会影响输出。即使睡眠,该程序也会不一致地复制和粘贴。
public static bool CopyPaste(string startWindow, string endWindow, int delay = 0)
{
int startWindowID = FindWindow(null, startWindow);
int endWindowID = FindWindow(null, endWindow);
SetForegroundWindow(startWindowID);
SendKeys.SendWait("^{a}");
SendKeys.SendWait("^{c}");
Thread.Sleep(delay);
SetForegroundWindow(endWindowID);
SendKeys.SendWait("^{a}");
SendKeys.SendWait("^{v}");
}
我知道在其他窗口之间进行复制和粘贴是很挑剔的,不是一个好主意,但是我别无选择。
使用SendKeys.SendWait()
是正确的方法吗?有其他更可靠的方法吗?我该如何提高其跨平台的可靠性?
编辑:
尽管Clipboard类确实正确传输了文本,但它似乎更加不可靠。通常会引发错误,指出“请求的剪贴板操作未成功。”