windows - 从c ++服务访问剪贴板

时间:2015-02-25 11:49:46

标签: c++ windows windows-services clipboard

我有一个用C ++编写的Windows服务,需要访问剪贴板并从中读取数据/粘贴数据。我只考虑文本数据。

MSDN的文档中,我可以使用OpenClipboardEmptyClipboardSetClipboardData来实现我想要的目标。

我必须将NULL传递给OpenClipboard,因为我没有任何UI,因此没有窗口句柄。但是,这意味着 -

  

如果应用程序在hwnd设置为NULL的情况下调用OpenClipboard,则EmptyClipboard会将剪贴板所有者设置为NULL;这会导致SetClipboardData失败。

这意味着我无法在剪贴板上设置数据。

解决这个问题的正确方法是什么?是否可以不使用任何窗户?

1 个答案:

答案 0 :(得分:2)

您肯定可以从非GUI应用程序访问剪贴板。 Windows甚至还包括一个命令行应用程序(clip.exe)来执行此操作 但是,在你花太多时间在这之前...... 剪贴板不在同一系统上的用户之间共享。假设您有两个用户登录。您无法从一个会话复制数据,切换用户(从锁定屏幕)并粘贴相同的数据。 因此,假设您的服务将像另一个用户会话一样行动,您的应用程序将只能看到之前在该服务的同一实例中复制的数据。

相关问题