当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

将文件copy到剪贴板上

      bool CopyToClipboard(AnsiString file);
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        CopyToClipboard("C:\\scandisk.log");
    }
    //---------------------------------------------------------------------------
    //收集整理:http://www.ccrun.com (C++ Builder 研究)
    //---------------------------------------------------------------------------
    bool CopyToClipboard(AnsiString file)
    {
        int nLen;
        char* Data;
        HANDLE hMem;

        if (file.IsEmpty()) return false;

        nLen = 20 + file.Length() + 2;
        hMem = GlobalAlloc(GMEM_MOVEABLE
            GMEM_DDESHAREGMEM_ZEROIN99v,
            nLen);
        if (hMem==NULL) return false;
        Data = (char*)GlobalLock(hMem);
        *(DWord*)Data = 20;
        strcpy(Data+20, file.c_str());
        GlobalUnlock(hMem);
        if (OpenClipboard(NULL)) {
            EmptyClipboard();
            if (SetClipboardData(
                CF_HDROP,hMem)!=0)
              hMem = NULL;
            CloseClipboard();
        }
        if (hMem) GlobalFree(hMem);

        return hMem ? false : true;
    }

相关内容
赞助商链接