【问题标题】:IPC through windows clipboard using c++使用 C++ 通过 Windows 剪贴板进行 IPC
【发布时间】: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 劫持剪贴板将是非常不礼貌的行为。这是反对它的所有其他技术原因之上的。

标签: c++ windows winapi ipc


【解决方案1】:

这是将文本从一个应用程序传递到另一个应用程序的最奇怪的方式!还会想到发送电子邮件。

有一种 Windows 原生方法可以做到这一点:发送 WM_COPYDATA 消息。 详情请见https://docs.microsoft.com/en-us/windows/win32/dataxchg/wm-copydata

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 2014-09-18
    • 2010-09-24
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多