文字到剪贴板

时间:2019-03-25 09:16:50

标签: c++ windows clipboard

我想在剪贴板上输入文字:

#include <windows.h>


void copier_dans_presse_papier(const char *s)
{
    if(OpenClipboard(NULL))
    {
        HGLOBAL h;
        EmptyClipboard();
        h = GlobalAlloc(GHND, strlen(s) + 1);
        if(h)
        {
            char *p = GlobalLock(h);   /* line 13 */
            if(p)
            {
                strcpy(p, s);
                GlobalUnlock(h);
                SetClipboardData(CF_TEXT, h);
            }
            GlobalFree(h);
        }
        CloseClipboard();
    }
}

int main(void)
{
    copier_dans_presse_papier("Hello World !");
    return 0;
}

我在编译时遇到此错误: [错误]从'LPVOID {aka void *}'到'char *'的无效转换[-fpermissive]

(第13行)

如何解决?

1 个答案:

答案 0 :(得分:0)

GlobalLock不会返回char*,而是返回LPVOID(对于typedef来说只是void*)。只是像这样转换结果:

char *p = (char*) GlobalLock(h);

它有效,至少对我有用。您可能使用C教程编写了代码,而无需进行强制转换。