c# - SendKeys.SendWait() 不能在所有计算机上始终如一地工作
问题描述
我正在使用 SendKeys.SendWait() 在窗口之间来回复制和粘贴文本。我写了一个复制粘贴方法,它使用FindWindow
和SetForegroundWindow
方法"User32.dll"
大多数情况下,在我的设备上,该方法运行良好。但是,在不同设备上运行时非常不一致。所有设备都使用相同的操作系统,并且打开了大致相同的应用程序。
有时,该方法会粘贴错误的文本(来自以前的副本),有时该方法根本不起作用。
我已确保使用文档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()
正确的方法来解决这个问题?有没有不同的、更可靠的方法来做到这一点?我可以做些什么来提高其跨平台的可靠性?
编辑:
虽然剪贴板类确实可以正确传输文本,但它似乎更不可靠。它经常抛出一个错误,说“请求的剪贴板操作没有成功”。
解决方案
推荐阅读
- mysql - 如何在 laravel elequent 中加入子查询
- ios - 带有 UIView 的 StackView 约束
- linux - 一次循环遍历文件 4 行并将这些行存储在 4 个变量中
- python - Discord.py - 给某人一个角色,但在 PM 和服务器 ID 中
- r - R中两个向量的表和bin
- pandas - 使用 Beautiful Soup 从多个表之一中提取值
- javax.sound.midi - 在 MidiSystem 的 Sequencer 对象中更改音序器
- r - 将 data.table 列中的向量值替换为另一个 data.table 中的相关值的最有效方法是什么?
- visual-studio-code - Ionide Intellisense 快速修复不向文件添加代码 - F# Visual Studio Code
- python - 将列表转换为时间序列数据中的数据框