文本到剪贴板

Text to clipboard

本文关键字:剪贴板 文本      更新时间:2023-10-16

我想把一个文本放到剪贴板,我的代码:

#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*' 的转换无效 [-fallowive]

(第 13 行(

如何解决这个问题?

GlobalLock

返回char*,而是返回LPVOID(这只是void*typedef(。只需像这样投射结果:

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

有效,至少它对我有用。您可能使用 C 教程编写了代码,其中不需要强制转换。