zoukankan      html  css  js  c++  java
  • BCB中利用剪贴板复制粘贴(转)

        将一个字符串拷贝到剪贴版中的不同方法:
    #include <vcl/Clipbrd.hpp>
    // 方法一:
        TClipboard *pClipboard = new TClipboard();
        pClipboard->AsText = "拷贝到剪贴版的文字数据";
        delete pClipboard;
    // 方法二:
        TClipboard *pClipboard = new TClipboard();
        pClipboard->SetTextBuf("拷贝到剪贴版的文字数据");
        delete pClipboard;
    // 方法三:
        Clipboard()->SetTextBuf("拷贝到剪贴版的文字数据");
    // 方法四:
        Clipboard()->AsText = "拷贝到剪贴版的文字数据";
    


    // 将文件Copy到剪贴板
    bool CopyFileToClip(LPCSTR pcFile)
    {
        // sFile为拷贝文件名,多个文件以/0分隔,以/0/0结束
        int nLen;
        BYTE *pData;
        HGLOBAL hGbl;
        DROPFILES df;
        if(!pcFile || !pcFile[0])
            return false;
        if(!OpenClipboard(0))
            return false;

        EmptyClipboard();
        df.fNC = false;
        df.fWide = false;
        df.pFiles = sizeof(df);
        df.pt.x = df.pt.y = 0;

        for(nLen=0; pcFile[nLen]!=0; )
            nLen += strlen(pcFile + nLen) + 1;
        nLen += 1; //最后结尾的第二个/0字符
        hGbl = GlobalAlloc(GHND, sizeof(df) + nLen);
        pData = (BYTE*)GlobalLock(hGbl);
        if(pData != NULL)
        {
            memcpy(pData, &df, sizeof(df));
            memcpy(pData + sizeof(df), pcFile, nLen);
            GlobalUnlock(hGbl);
            if(!SetClipboardData(CF_HDROP, hGbl))
            {
                GlobalFree(hGbl);
                hGbl = NULL;
            }
        }
        else if(hGbl != NULL)
        {
            GlobalFree(hGbl);
            hGbl = NULL;
        }
        CloseClipboard();
        return (hGbl != NULL);
    }
    //---------------------------------------------------------------------------
    // 从剪贴板Paste出文件
    bool PasteFileFromClip(LPCSTR pcDesDir)
    {
        int nLen;
        bool bReturn;
        LPCSTR lpcData;
        HGLOBAL hGbl;
        AnsiString strTemp;
        DROPFILES *pdf;
        SHFILEOPSTRUCT fos;

        if(!pcDesDir || !pcDesDir[0])
            return false;

        if(!OpenClipboard(0))
            return false;
        hGbl = GetClipboardData(CF_HDROP);
        pdf = hGbl? (DROPFILES*)GlobalLock(hGbl): NULL;
        if(pdf == NULL)
        {
            CloseClipboard();
            return false;
        }
        lpcData = (LPCSTR)pdf + pdf->pFiles;

        memset(&fos, 0, sizeof(fos));
        if(pdf->fWide)
        {
            strTemp = WideCharLenToString((wchar_t*)lpcData, GlobalSize(hGbl)-pdf->pFiles);
            fos.pFrom = strTemp.c_str();
        }
        else
            fos.pFrom = lpcData;
        fos.wFunc = FO_COPY;
        fos.pTo = pcDesDir;
        bReturn = SHFileOperation(&fos)==0;
        GlobalUnlock(hGbl);
        CloseClipboard();
        return bReturn;
    }
    // if(CopyFileToClip("C://1.txt/0C://Test.exe/0"))
    // PasteFileFromClip("D://");

  • 相关阅读:
    Chrome应用商店打不开解决方法
    vue中的列表项删除操作
    markdown(语法)入门学习:
    利用插件(jQuery-ui.js)实现表格行的拖拽排序
    div拖拽互换位置(vue)
    MarkDown学习
    经典算法精讲精练之回溯法求解0-1背包问题
    读书笔记——《谁说菜鸟不会数据分析—Python篇》
    读书笔记之《统计之美:人工智能时代的科学思维》
    读书笔记之《漫画算法:小灰的算法之旅》
  • 原文地址:https://www.cnblogs.com/geowu/p/7102825.html
Copyright © 2011-2022 走看看