控制台应用程序中的拦截剪贴板粘贴事件

时间:2018-10-21 05:27:23

标签: c windows winapi clipboard line-endings

使用Visual Studio 2017(当前补丁程序级别,15.8.7),从仅LF文件复制并粘贴到控制台中的任何文本都会丢失换行信息。因此,所有文本似乎都在一行上。

我可以随意更改要粘贴到其中的控制台应用程序,该应用程序当前使用ReadConsole()。我想知道是否可以做些什么来拦截粘贴命令并对其进行处理以兑现普通的换行符。有一些较低级别的控制台API,例如ReadConsoleInput(),似乎意味着重新实现所有光标控制和行编辑逻辑。我可能随时都想这样做……但是,如果我这样做了,是否有办法钩住粘贴内容(不仅是Ctrl-V,而是更抽象的东西,例如从菜单中?)

如果无法解决,则别无选择,只能将其称为Visual Studio的错误。在Windows上的程序员编辑器中,这似乎是一种普遍的问题-此处in a closed issue for VScodestill open issue for Atom中都提到了该问题……该动画很好地再现了相同的旧问题:

demo of atom collapsing multiline LF-only input into single-line notepad data

就像我说的那样,我担心的不是记事本...而是我可以更改的Windows控制台应用程序,理想情况下可以使这种粘贴变得健壮。

但是,如果没有其他选择,我会对是否有人知道如何告诉Visual Studio将纯LF文件中的内容粘贴到控制台中的多行中感兴趣...我可以将其标准化为CR-LF复制(但希望在编辑过程中不会损坏所有LF文件)。 :-/

0 个答案:

没有答案