Warning: file_get_contents(https://whois.pconline.com.cn/jsLabel.jsp?ip=127.0.0.1) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in D:\wwwroot\huidong\wwwroot\function.inc.php on line 884
剪贴板操作 - huidong

huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


#include <Windows.h>

// 复制数据至剪切板
void CopyToClipboard(const char* data)
{
    if (!data)
    {
        return;
    }

    int nDataLen = strlen(data) + 1;

    // 将数据保存至粘贴板
    HGLOBAL hClip;

    // 定义一个HGLOBAL句柄变量用来指向分配的内存块
    if (OpenClipboard(NULL))
    {
        // 将剪贴板内容清空
        EmptyClipboard();

        // 在堆上分配可移动的内存块,程序返回一个内存句柄
        hClip = GlobalAlloc(GMEM_MOVEABLE, nDataLen);

        // 对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1
        char* buff = (char*)GlobalLock(hClip);
        strcpy_s(buff, nDataLen, data);

        // 数据写入完毕,进行解锁操作,并将引用计数器数字减1
        GlobalUnlock(hClip);

        // 将存放有数据的内存块放入剪贴板的资源管理中
        SetClipboardData(CF_TEXT, hClip);

        // 关闭剪贴板,释放剪贴板资源的占用权
        CloseClipboard();
    }
}

// 从剪切板中取得数据
void GetTextFromClipboard(char* pStr, int size)
{
    if (OpenClipboard(NULL))//打开剪贴板  
    {
        if (IsClipboardFormatAvailable(CF_TEXT))//判断格式是否是我们所需要  
        {
            HANDLE hClip;

            //读取数据  
            hClip = GetClipboardData(CF_TEXT);
            char* str = (char*)GlobalLock(hClip);

            memset(pStr, 0, size);
            if (str != NULL)
                strcpy_s(pStr, size, str);

            GlobalUnlock(hClip);
            CloseClipboard();
        }
    }
}


亲测可用(VS2019)



返回首页


Copyright (C) 2018-2024 huidong