数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-27 21:13
标题: 一段把文件拷贝到剪贴板的代码!
<>bool CopyToClipboard(AnsiString file)
3 e! p: o0 j3 @3 z+ @; n0 R{& T( J# v8 Y& i( W: T- ]% b4 b1 d- g
    int nLen;* w& y3 K# K7 b) P; h9 ?
    char* Data;" d$ K. @) D% N
    HANDLE hMem;</P>) x6 ^( |, {4 j: v
<>    if (file.IsEmpty()) return false;</P>
% i* L9 o- c5 U" _: R; T9 u<>    nLen = 20 + file.Length() + 2;, }" b# p, |8 P. y! G9 G9 W; u0 q9 X: J
    hMem = GlobalAlloc(GMEM_MOVEABLE! f9 ]: T6 E  E$ D4 d" Q* R5 r( _, q* _
        |GMEM_DDESHARE|GMEM_ZEROINIT,
7 |5 ?" I, G' u0 }  O0 l1 w* k        nLen);# ?( U7 x" K( t: o' o) p- c
    if (hMem==NULL) return false;
* ~- [) U, Z- D, d+ g; b5 A    /*Data = (char*)GlobalLock(hMem);
. D$ \/ e2 K7 E9 H% C6 ?    *(DWORD*)Data = 20;
. G& ^9 F$ Z. p. [    strcpy(Data+20, file.c_str());/ ^3 I5 a) \7 x( x
    GlobalUnlock(hMem);*/3 x, p8 {% X1 e9 j4 W
    if (OpenClipboard(NULL)) {
/ w, }: J5 t! S" V( _        EmptyClipboard();  //加上这一句 & ^: d5 [% l- Q, o, [' @
        if (SetClipboardData(
. y7 e4 G8 O! N, ]% E8 ~            CF_TEXT,hMem)!=0)$ T3 b/ Q2 Z2 c* }4 C2 x) w' _- F
            hMem = NULL;# A, e% P9 t1 @6 M) ~* V
        CloseClipboard(); ) S4 `! |; v6 c3 u( F& g
    }
) }- U2 `3 Q, m) `" Q! }5 _    if (hMem) GlobalFree(hMem); </P>2 C. c3 K( P) Y+ p3 z4 ^
<>    return hMem ? false : true;
+ J* W: r% c( e# c6 J# ?} </P>
- q  k) s7 A4 X; e2 X; [2 y0 c# n7 L<>void __fastcall TForm1::Button1Click(TObject *Sender)
/ j& U2 }% b2 a{
3 U5 d9 w- h9 G& I  CopyToClipboard(Edit1-&gt;Text);
3 h+ s+ l! \" i" H  GetClipboardData(CF_OEMTEXT);
, D9 n& N3 Y" k0 a}
  j6 d0 r( w: p% O& i, y//---------------------------------------------------------------------------
; s; @/ M  Y1 }+ V* o' M! l* K6 D' dCB6+update4在windows2000下通过!</P>




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