操作剪贴板

来源:互联网 发布:淘宝cf刷枪 编辑:程序博客网 时间:2024/05/03 10:55

剪贴板:

一、将数据送到剪贴板

    <1>、内存配置

          HGLOBAL  hGlobal ;

          hGlobal = GlobalAlloc (GHND | GMEM_SHARE,(lstrlen (pText) + 1) * sizeof (TCHAR)) ;

         为什么不用malloc: 在Windows中执行的应用程序之间必须要共享剪贴簿所储存的内存块

    <2>、锁定刚分配的内存

          PTSTR    pGlobal ;

          pGlobal =  (TCHAR*)GlobalLock (hGlobal);

          为什么要锁定?Windows将固定虚拟内存中的地址,不再移动那块内存

    <3>、写入数据

          lstrcpy (pGlobal, pText) ;

    <4>、解锁定

          GlobalUnlock (hGlobal) ;
         
          这将使Windows可以在虚拟内存中移动内存块.(不要把锁定的内存句柄交给剪贴簿)

    <5>、打开剪贴簿并把它清空

         OpenClipboard () ;
       
         EmptyClipboard () ;

    <6>、利用CF_TEXT标识符把内存句柄交给剪贴簿,关闭剪贴簿:

         SetClipboardData (CF_TEXT, hGlobal) ;
       
         CloseClipboard () ;

二、从剪贴簿获取数据

   <1>、打开剪贴簿
  
             OpenClipboard () ;

   <2>、确定剪贴簿是否含有文字

            HGLOBAL  hGlobal ;

            if( hGlobal = GetClipboardData(CF_TEXT) )
     {

            }
            如果hGlobal为NULL则说明 剪贴簿中没有文字. 得到的句柄并不属于使用者程序-它属于剪贴簿

   <3>、锁定剪贴簿

            PTSTR    pGlobal ;

            pGlobal =  (TCHAR*)GlobalLock (hGlobal);

   <4>、配置一块与剪贴簿数据块大小相同的内存块,并配置一个指向该块的指标:
       
             PTSTR    pText;

             pText = (TCHAR*) malloc (GlobalSize (hGlobal)) ;


   <5>、读出数据
          
             lstrcpy (pText, pGlobal) ;

   <6>、解锁定

            GlobalUnlock (hGlobal) ;

   <7>、关闭剪贴簿

           CloseClipboard () ;

 

 

 

 

 

 

 

 

 

 

原创粉丝点击