剪贴板数据不会被粘贴

时间:2015-10-30 19:37:42

标签: winapi clipboard

我尝试加载并粘贴剪贴板中的数据,如下所示:

int main() {

    Sleep(3000);

    char buf[] = "Hello33";

    HWND hwnd = GetActiveWindow();

    if (OpenClipboard(hwnd)) {
        EmptyClipboard();
        HGLOBAL hClipboardData;
        hClipboardData = GlobalAlloc(GMEM_DDESHARE, BUFLEN);
        char * pchData;
        pchData = (char*) GlobalLock(hClipboardData);
        strcpy(pchData, LPCSTR(buf));
        GlobalUnlock(hClipboardData);
        SetClipboardData(CF_TEXT, hClipboardData);
        CloseClipboard();

        SendMessage(hwnd, WM_PASTE, 0, 0);
    }
}

启动程序,然后打开文本编辑器,文本编辑器是顶部窗口,没有粘贴文本。如果我执行粘贴命令Ctrl-V,我会在文本区域中显示Hello33

1 个答案:

答案 0 :(得分:0)

GetActiveWindow返回主窗口而不是子窗口

你应该尝试GetFocus();

但即使这样也行不通,因为它在属于其他进程的其他线程中。

要解决此问题,请致电AttachThreadInput

最后我建议删除所有这些,然后尝试使用FindWindow并使用SendDlgItemMessage

将消息直接发送到编辑框