SendKeys.SendWait()并非在所有计算机上均能正常工作

时间:2019-02-10 02:49:40

标签: c# .net winforms sendkeys

我正在使用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类确实正确传输了文本,但它似乎更加不可靠。通常会引发错误,指出“请求的剪贴板操作未成功。”

0 个答案:

没有答案