数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-27 21:13
标题: 一段把文件拷贝到剪贴板的代码!
<>bool CopyToClipboard(AnsiString file)8 H( d& z/ e+ I/ \
{
' N% m3 G. X/ H( L1 n$ I0 i' H    int nLen;5 Z& i) I5 ~7 F. ]; z) m- J  O
    char* Data;  u; R3 C6 e& S5 K  K
    HANDLE hMem;</P>
' T$ W1 ]1 w( L9 G1 t8 Y; c  n<>    if (file.IsEmpty()) return false;</P>
. u  D) h' |- U" P5 _: `& O2 ]<>    nLen = 20 + file.Length() + 2;
# V+ r6 P7 L9 M    hMem = GlobalAlloc(GMEM_MOVEABLE3 J4 g8 k8 D) t/ P
        |GMEM_DDESHARE|GMEM_ZEROINIT,
4 l& `3 G* B* w" D2 B        nLen);& X  `$ t/ e, g/ v+ m
    if (hMem==NULL) return false; / x- p! Q9 a9 f% C7 V0 A0 A
    /*Data = (char*)GlobalLock(hMem);
( w1 t: k$ A  u2 D' |% l4 f    *(DWORD*)Data = 20;
4 a" V+ N- n9 Z% Q) @$ _' `/ _    strcpy(Data+20, file.c_str());
2 {/ m  f. E$ h7 X/ e    GlobalUnlock(hMem);*/
) _' g1 Q- ]6 s' A    if (OpenClipboard(NULL)) {
: v' d" w; B( F4 J6 l- H        EmptyClipboard();  //加上这一句 / s( K; S, Z8 M+ g/ D5 K" T2 k/ [
        if (SetClipboardData(
* e; h9 v2 P/ y2 t. h, H- `            CF_TEXT,hMem)!=0)
+ n# @/ Y# [: ^* `4 ^; l            hMem = NULL;
, m: i+ S( `. h' z8 V  I) o        CloseClipboard(); , \9 ~" Y! Z/ s* d  h; O% t
    }
1 c8 ^( F$ ^# ?9 |7 b% A4 ]$ r    if (hMem) GlobalFree(hMem); </P>4 M, E% }7 I! Q9 ?* f
<>    return hMem ? false : true;
0 n( M8 g, ^! p, f  O/ n} </P>: {1 Y2 c, J$ ]) P1 l9 B; t1 d0 A
<>void __fastcall TForm1::Button1Click(TObject *Sender)
2 \* m4 h8 H! i% d# Q{
4 b+ {; @5 A, i2 ]1 n  CopyToClipboard(Edit1-&gt;Text);$ L" D8 Z1 t1 @7 m4 ]0 r# p
  GetClipboardData(CF_OEMTEXT);
& O4 k8 r: w$ ^+ y1 X' v& D( q}. q6 [: A. D8 Z: o+ g! F0 y
//---------------------------------------------------------------------------
/ n. p! d7 {, ~CB6+update4在windows2000下通过!</P>




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