从 OneNote 复制文本时,它也会作为图像显示在剪贴板中。(内容以各种不同的格式类型保存在 Windows 剪贴板中)某些应用程序在粘贴时使用图像版本,导致粘贴的文本显示为图像。
Microsoft 支持页面上有一些未解决的支持票,但似乎没有正在开发的功能/错误修复。
自我回答的问题...但欢迎更好的解决方案。
答案1
我通过编写以下 AutoHotkey 脚本解决了这个问题
$^c::
Send ^c ; Do a normal copy to clipboard
sleep 100 ; Wait for the copy to finish
WinGet current_application, ProcessName, A ; Get the name of the current application
; if the application is OneNote, and the copied content is text ...
if ((current_application = "ONENOTE.EXE") && DllCall("IsClipboardFormatAvailable", "uint", 1)) {
clipboard = %clipboard% ; remove the formatting
}
Return
此脚本检测当前应用程序和正在复制的内容类型。如果文本是从 OneNote 复制的,它会将文本以纯文本形式存储在剪贴板中,删除其他类型,从而使其他应用程序中的粘贴工作正常。
与其他解决方案(使用 Ctrl-V 时删除格式)相比,这个脚本的优势在于,在 Word 中复制粘贴文件/图像/格式化文本不会中断。
答案2
答案3
当我复制并粘贴到 Yahoo 邮箱时,它被复制为图像。这对我来说很管用。在 Gmail 中打开一个新的消息页面并复制到其中。我复制为文本。然后您可以从那里复制并粘贴为文本。
答案4
除了@Wouter 的建议外,如果您使用 Windows Store 中的 OneNote 作为 UWP,它将不会作为 ONENOTE.EXE 运行,我修改了 Autohotkey 脚本如下:
$^c::
Send, ^c
ClipWait, 1
if ErrorLevel
{
MsgBox, Copying to clipboard failed.
return
}
WinGet, current_application, ProcessName, A
WinGetTitle, current_window_title, A
if (current_application = "ApplicationFrameHost.exe" && InStr(current_window_title, "OneNote"))
{
if DllCall("IsClipboardFormatAvailable", "uint", 1)
{
clipboard := clipboard ; Convert to text-only, removing formatting.
ClipWait, 1
if ErrorLevel
{
MsgBox, Failed to process clipboard data.
}
}
}
return