操作系统独立剪贴板复制/粘贴C中的文本

时间:2010-02-16 02:17:32

标签: c clipboard

我正在研究一个可以在Windows和Linux上工作的项目(也有一个非官方的Mac端口),模拟真正的色彩系统控制台。

我的问题是,最近出现了对文本字段支持的请求(是的,基于控制台),添加将文本复制到剪贴板并从中粘贴的可能性会很酷。有没有办法实现这一目标:

  • 用C(不是C ++)完成,
  • 在Windows和Linux中工作(如果没有与平台无关的代码,预处理器宏是一个选项),
  • 不需要额外的库链接到?

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:5)

如果您没有使用跨平台的UI库(如wx或其他东西),那么您只需要为要支持的每个平台编写本机剪贴板代码。

请记住,在Macintoshes上,您使用Command-C复制,而不是Ctrl + C:)

答案 1 :(得分:4)

剪贴板本质上是一个操作系统定义的概念。 C语言本身不知道剪贴板是什么或如何操作它。您必须直接与操作系统接口,或使用代表您执行此操作的可移植性库。没有办法解决这个问题。

答案 2 :(得分:4)

就个人而言,我会定义我自己的功能

getClipboardText();

这是在两个不同的头文件(linux_clipboard.h,windows_clipboard.h等)中定义的,然后执行前处理程序以相应地加载相应的文件。我真的没有用C / C ++编写代码,所以如果这没有任何意义或者是不好的做法我很抱歉,但这就是我要做的事情。

#if WIN32
#include windows_clipboard.h
#endif

那种事

记住: 对于linux,你必须处理不同的窗口管理器(Gnome,KDE),它们都有不同的管理剪贴板的方法。在设计应用时请记住这一点。

答案 3 :(得分:1)

您可以使用xclip与剪贴板进行通信。你可以在这里使用这个python脚本通过与'dcop'和'klipper'here进行通信来完成这项工作。这是针对KDE的,我不知道如何在GNOME下完成...你也可以通过使用DBUS独立完成GNOME / KDE,尽管我不能100%自信地说...

请注意,对于真正的跨平台工作,您必须考虑不同的GUI,例如在Linux下,X是主窗口管理器界面,GNOME / KDE位于其上面。我并没有单独列出其他GUI,例如FluxBox,WindowMaker等等,而且会有很多与平台相关的代码,而且同时,你也将处理Windows剪贴板......总之,一个大的综合代码...

您是否考虑过查看原始X编程API以获得剪贴板支持?也许这可能会更好,正如我想象的那样,GNOME / KDE等正在使用X的API来完成剪贴板工作......如果确认了,那么工作将被删除并独立于主要的GUI界面...... (我希望情况会如此,因为它会让你的项目更轻松!)

也许使用编译时开关,对于每个平台...... WIN,KDE,GNOME,MAC或使用已经预定义的那个..

希望这有帮助, 最好的祝福, 汤姆。