从不同的应用程序复制和粘贴剪贴板

Posted

技术标签:

【中文标题】从不同的应用程序复制和粘贴剪贴板【英文标题】:Copy and paste Clipboard from different application 【发布时间】:2014-06-18 15:23:04 【问题描述】:

我需要从一个应用程序复制信息并将其粘贴到另一个应用程序.. 或以某种方式从剪贴板获取信息。我知道如何将 ctrl-r 发送到该应用程序并运行它。 我也想发送ctrl-c,但它什么也没做。我在剪贴板中有一些信息(程序完成后它仍然存在),我尝试将数据粘贴到记事本。它也不运行。我在网上找到了一些想法,但我不知道如何运行它。 ctrl-v 仅将 v 写入记事本。

这是我的代码:


    INPUT Refrk1;
    INPUT Refrk2;
    INPUT Refrk3;
    INPUT Refrk4;
    INPUT Inputs[2];


    Refrk1.type = 1;
    Refrk1.ki.wVk = 0x11;
    Refrk1.ki.wScan = 0;    
    Refrk1.ki.dwFlags = 0;  
    Refrk1.ki.dwExtraInfo = 0;
    Refrk1.ki.time = 1;
    Refrk2.type = 1;
    Refrk2.ki.wVk =0x43;
    Refrk2.ki.wScan = 0;    
    Refrk2.ki.dwFlags = 0;
    Refrk2.ki.dwExtraInfo = 0;
    Refrk2.ki.time = 0;
    Refrk3.type = 1;
    Refrk3.ki.wVk =0x56;
    Refrk3.ki.wScan = 0;    
    Refrk3.ki.dwFlags = 0;
    Refrk3.ki.dwExtraInfo = 0;
    Refrk3.ki.time = 0;

    Refrk4.type = 1;
    Refrk4.ki.wVk =0x0D;
    Refrk4.ki.wScan = 0;    
    Refrk4.ki.dwFlags = 0;
    Refrk4.ki.dwExtraInfo = 0;
    Refrk4.ki.time = 0;


    ShowWindow(hAMIDST, SW_SHOWNORMAL);
    SetForegroundWindow(hAMIDST);

    SendInput(2, Inputs,sizeof(Inputs[2]));
    Refrk1.ki.dwFlags = KEYEVENTF_KEYUP;
    Refrk2.ki.dwFlags = KEYEVENTF_KEYUP;
    Inputs[0] = Refrk1;
    Inputs[1] = Refrk2;
    SendInput(2, Inputs,sizeof(Inputs[2]));

    ShowWindow(hNOTE, SW_SHOWNORMAL);
    SetForegroundWindow(hNOTE);


    Inputs[0] = Refrk1;
    Inputs[1] = Refrk3;
    SendInput(2, Inputs,sizeof(Inputs[2]));
    Sleep(10);
    Refrk1.ki.dwFlags = KEYEVENTF_KEYUP;
    Refrk3.ki.dwFlags = KEYEVENTF_KEYUP;
    Inputs[1] = Refrk1;
    Inputs[0] = Refrk3;
    SendInput(2, Inputs,sizeof(Inputs[2]));

    SendInput(1, &Refrk4,sizeof(INPUT));
    Refrk4.ki.dwFlags = KEYEVENTF_KEYUP;
    SendInput(1, &Refrk4,sizeof(INPUT));

    ShowWindow(hAMIDST, SW_SHOWNORMAL);
    SetForegroundWindow(hAMIDST);

ctrl-rctrl-c 是该程序中的热键。但是ctrl-c 没有运行。 我发现我需要以某种方式控制剪贴板,但我不知道如何。 它没有运行。 OpenClipboard 等,我需要通过发送 ctrl-c 来完成,而这是该应用程序中的热键并且文本不在窗口中,但它将所需的信息复制到剪贴板。

【问题讨论】:

我不认为按键生成是一个好主意。您有窗口句柄,因此您可以更好地将registered 消息发送到您要从中复制信息和粘贴信息的窗口。您需要将这些消息的处理程序包含到相应的消息映射中。您还应该阅读 Windows 剪贴板 here,它提供了一个 API。 【参考方案1】:

剪贴板有一个 API。您的应用程序将定义必须传输的内容,例如作为文本、位图或其他内容。你需要买一本书或on-line tutorial。

【讨论】:

以上是关于从不同的应用程序复制和粘贴剪贴板的主要内容,如果未能解决你的问题,请参考以下文章

如何在navicat中复制一条数据并粘贴

QT读取剪切板内容-实现复制粘贴文本和图片

VB如何利用剪贴板复制、粘贴文件,用到啥API

使用 python/win32 从/到剪贴板复制和粘贴

富文本框 .rtf 字符串与通过剪切和粘贴复制文本不同。如何获得相同的格式?

Android 从剪贴板管理器复制/粘贴