数学建模社区-数学中国

标题: 一段把文件拷贝到剪贴板的代码! [打印本页]

作者: ilikenba    时间: 2004-4-27 21:13
标题: 一段把文件拷贝到剪贴板的代码!
<>bool CopyToClipboard(AnsiString file)) Z, v$ Q% ~: S. H) ^+ S; C
{
$ g% [) [# g6 ~" y( O1 C    int nLen;3 B% N  e) T8 x0 n7 |- ~8 g, r
    char* Data;+ C$ K: B0 a# L. p
    HANDLE hMem;</P>
+ w5 g' s2 L! U7 B<>    if (file.IsEmpty()) return false;</P>
8 i- w  u5 h# N: u7 A6 f7 y* H<>    nLen = 20 + file.Length() + 2;
8 i- L6 Z  G2 ?- c    hMem = GlobalAlloc(GMEM_MOVEABLE& z8 J; y3 C, X( X1 Z2 d# {
        |GMEM_DDESHARE|GMEM_ZEROINIT,& B- n) d2 P% ^) v
        nLen);
7 I- {, f/ {4 y& U* p0 m    if (hMem==NULL) return false;
( |' R! F- ?' ]1 c6 F) Q% c    /*Data = (char*)GlobalLock(hMem);' X2 Z# b' z$ G5 Q8 `
    *(DWORD*)Data = 20;% {- e( m1 Q! n8 K: D8 s; v+ l9 |8 M
    strcpy(Data+20, file.c_str());
: K* Z/ ?1 t  `    GlobalUnlock(hMem);*/
* z% Z* d4 A$ }; C. m    if (OpenClipboard(NULL)) {
% [! G- |" |( h- U) {1 T: J        EmptyClipboard();  //加上这一句
- ?7 [" D9 ]2 D        if (SetClipboardData(
, g* T; Y: V6 l7 I3 v$ x            CF_TEXT,hMem)!=0)
9 G4 t1 k+ G$ ~; E            hMem = NULL;
' h7 r% T9 @5 }        CloseClipboard();
/ i" G1 m0 ]" q# k6 w    }
5 k* D: b# h1 m: L    if (hMem) GlobalFree(hMem); </P>
/ f6 e4 H9 P% |6 U) i& M<>    return hMem ? false : true;
% T! q0 w6 y' k/ \2 x9 t} </P>
  H8 a7 Q3 Y9 h6 E9 l+ n<>void __fastcall TForm1::Button1Click(TObject *Sender)
5 k1 Q: W' I- x* Q! I  ^1 H* c1 R, u{: h) G/ r1 R: I8 P
  CopyToClipboard(Edit1-&gt;Text);
4 C  {9 u5 q3 R  GetClipboardData(CF_OEMTEXT);2 L% y7 t& T! y( X- H% o( S
}" N' z2 t4 B7 B! \7 M5 E
//---------------------------------------------------------------------------
" v% \( g2 C# y2 QCB6+update4在windows2000下通过!</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5