c#定義了乙個類system.windows.forms.clipboard來簡化剪下板操作,這個類有乙個靜態方法,主要有:
clear 清除剪下板中的所有資料;
containsdata,containsaudio,containsfliedroplist,containstext,containsimage,用於檢查剪下板中是否存在相應的資料;
getaudiostream,getdataobject,gettext,getimage,getfiledroplist,用於取得資料;
setaudio,setdataobject,settext,setimage,setfiledroplist,用於新增資料;
以下是檢測剪下板的方法:
一、引入
要使用剪下板首先要引入三個函式,
[system.runtime.interopservices.dllimport("user32")]
private static extern intptr setclipboardviewer(intptr hwnd);
[system.runtime.interopservices.dllimport("user32")]
private static extern intptr changeclipboardchain(intptr hwnd,intptr hwndnext);
[system.runtime.interopservices.dllimport("user32")]
private static extern int sendmessage(intptr hwnd,int wmsg,intptr wparam,intptr lparam);
const int wm_drawclipboard = 0x308;
const int wm_changecbchain = 0x30d;
intptr setclipboardviewer(intptr hwnd) 用於往觀察鏈中新增乙個視窗控制代碼,這個視窗就可成為觀察鏈中的一員了,返回值指向下乙個觀察者。
intptr changeclipboardchain(intptr hwnd,intptr hwndnext); 刪除由hwnd指定的觀察鏈成員,這是乙個視窗控制代碼,第二個引數hwndnext是觀察鏈中下乙個視窗的控制代碼
int sendmessage(intptr hwnd,int wmsg,intptr wparam,intptr lparam); 傳送訊息
二、使用
定義完成之後,可以分三部來使用,第一步把自己的視窗新增到觀察鏈中成為觀察者,並儲存下乙個觀察者的控制代碼;第二步監視剪下板,並把剪下板變化的訊息傳送給下乙個觀察者;第三步撤消自己定義的觀察者,並通知下乙個觀察者。
private void form1_load(object sender, system.eventargs e)
第二步:監視剪下板,並把剪下板變化的訊息傳送給下乙個觀察者,這裡需要過載wndproc方法;
這裡用到兩個訊息常量:
const int wm_drawclipboard = 0x308;
const int wm_changecbchain = 0x30d;
protected override void wndproc(ref system.windows.forms.message m)
//檢測影象
if (idata.getdatapresent(dataformats.bitmap))
//檢測自定義型別
if (idata.getdatapresent("myformat"))
break;
default:
base.wndproc(ref m);
break;
}
}第三步:撤消自己定義的觀察者,並通知下乙個觀察者。
private void form1_closed(object sender, system.eventargs e)
三、擴充套件
dataformats類定義了剪下板內容的幾種格式,包括text,unicodetext,oemtext,rtf,html,dib,bitmap等,但自己可以定義新的資料格式,**如下 :
//新類
public class myobj
public string objname}}
//往剪下板中新增乙個自定義內容
private void newclipdata()
其中myformat就是自定義資料格式的名稱,
在上面的winproc中可以看到
//檢測影象
if (idata.getdatapresent(dataformats.bitmap))
檢測到剪下板中有影象內容時,就顯示這個影象,然後,呼叫newclipdata(),產生乙個新剪下板資料,其格式是自定義的myformat,這時,程式會通過下面這段**來檢測到這個變化,並處理
//檢測自定義型別
if (idata.getdatapresent("myformat"))
C 剪下板操作
複製資料至剪下板 bool copytoclipboard const char pszdata,const int ndatalen return false 從剪下板中取得資料 bool gettextfromclipboard closeclipboard return true return...
windows程式設計之剪下板
程序通訊的方式很多,可以通過套接字,管道,記憶體共享,wm copydata訊息,當然剪下板也是一種方式,並且在以後的環節還可能用得比較多。使用剪下板的步驟主要是 開啟剪下板,傳送端 大概如下 hwnd hedit getdlgitem hwnd,idc edit input tchar szedi...
剪下板操作 複製,剪下
copyfile.h pragma once include include include include include include using namespace std class ccopyfilesoper copyfile.cpp include stdafx.h include ...