【发布时间】:2021-04-01 13:25:56
【问题描述】:
这是从剪贴板获取最后一个文本项的方法:
OpenClipboard(nullptr);
HANDLE hData = GetClipboardData(CF_TEXT);
char* pszText = static_cast<char*>(GlobalLock(hData));
std::string text;
if (pszText != nullptr)
{
text.assign(pszText);
}
GlobalUnlock(hData);
CloseClipboard();
std::cout << text;
这是从剪贴板设置文本项的方法:
std::string source("text");
if (OpenClipboard(nullptr))
{
HGLOBAL clipbuffer;
char* buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.length() + 1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, source.c_str());
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer);
CloseClipboard();
}
但我不知道如何从剪贴板中删除最后一个文本项,我希望能够不让用户看到我正在使用剪贴板或更改他的剪贴板,这样他就无法粘贴他复制的最后一个内容.. .
我怎样才能做到这一点,使用 c++ 从 windows 剪贴板中删除一个文本项?
【问题讨论】:
-
将剪贴板内容设置为上一个或空字符串?
-
剪贴板可能是Windows下实现IPC最差的方式了。
-
将剪贴板内容设置为以前的,糟糕但简单快速......我认为
-
你是如何同步进程的?
-
@ClaudiuHBann 您不拥有剪贴板,用户拥有。为私有 IPC 劫持剪贴板将是非常不礼貌的行为。这是反对它的所有其他技术原因之上的。