我正在开发一个应用程序,只需单击一个按钮就可以清除系统剪贴板和办公室剪贴板。
我尝试了System.Windows.Forms.Clipboard.Clear()
和以下
static class WinAPI
{
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern bool OpenClipboard(System.IntPtr WinHandle);
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern bool EmptyClipboard();
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern bool CloseClipboard();
public static void ClearClipboard()
{
if (OpenClipboard(System.IntPtr.Zero))
{
EmptyClipboard();
CloseClipboard();
}
}
}
它们似乎只清楚系统剪贴板。有没有办法将其扩展到办公室剪贴板。
答案 0 :(得分:2)
根据this question,答案似乎是“不,不干净”:
操作Office剪贴板时没有VBA支持 在Excel 2000之后.SendKeys是片状的,但这是唯一的方法。
提到的“SendKeys”是一个“解决方案”,您可以在其中发送必要的击键或窗口消息 - 假设一个正在运行,如果没有,则必须启动一个。还有其他方法可以做到这一点,例如AutoIt。不幸的是,所有这些解决方案都很脆弱,并且容易在Office版本之间中断,因为它们依赖于窗口名称和外观的内部细节。在此之前,请确保您愿意接受维护负担。
更好的方法可能是告诉谁想要这个应用程序无法完成,因为Microsoft希望剪贴板控制留在最终用户 - 或者,已经有一个清除剪贴板的按钮,它存在于Office中(Alt,H,FO在我的版本中显示)。这并不总是有效,但是当它发挥作用时,它可以为你节省大量的工作。
答案 1 :(得分:1)
如果其他方法很麻烦,你可以将一个空格复制到剪贴板吗?
答案 2 :(得分:0)
您可以尝试提供here的解决方案。它适用于VBA,但您可以轻松地将代码转换为C#。
如果您需要帮助,请告诉我。