剪貼簿內建在windows中,並且使用系統的內部資源ram,或虛擬記憶體來臨時儲存剪下和複製的資訊,可以存放的資訊種類是多種多樣的。剪下或複製時儲存在剪貼簿上的資訊,只有再剪貼或複製另外的資訊
,或停電、或退出windows,或有意地清除時,才可能更新或清除其內容,即剪貼或複製一次,就可以貼上多次。
下面介紹在c++中怎麼操作剪貼簿,主要是寫入資料和獲取資料,對剪貼簿的操作可以看做是一種程序間通訊的方式
1、在vc++(6.0~9.0)新建乙個基於對話方塊的mfc的專案 clipboardtest
2、 新增兩個編輯控制項(idc_edit_send 和 idc_edit_recv)和兩個按鈕(idc_btn_send 和 idc_btn_recv)
3、為idc_btn_send 新增向剪貼簿寫入資料的**
[cpp]
view plain
copy if
(openclipboard())
//開啟剪貼簿
4、為idc_btn_recv 新增讀取剪貼簿資料的**
[cpp]
view plain
copy if
(openclipboard())
//開啟剪貼簿
} 方法一:
會這樣的原因是當複製到剪貼簿的時候那個程式使用的不是中文輸入法,那麼複製的時候就會以英文(一般情況下)編碼,再複製回來的時候,內碼已經變了,自然成了亂碼。ue能正確顯示是因為它自動相容多種中文內碼。解決方式如下:
1. 你可以把中文輸入法設定為預設的輸入法,再執行你的**,肯定不會亂碼的,但這種方法太笨了,不可能要求客戶這樣的嘛,對不對?所以要看方法2,這個方法僅作為測試之用,測試成功。
2. 根據上面的情況,可以只要是中文輸入法環境下複製中文就沒有問題,那麼我們可以呼叫api把輸入法選擇為中文輸入法(任一皆可,拼音五筆都沒有問題)。複製之後再用api設定為原來的輸入法。copy到某一程式的時候,那個程式可以是任意輸入法的。這兩三個api為ime開頭的什麼keyboardlayout的函式,你google一下,找到這樣的函式名再去msdn看看用法,很快就解決了。
方法二:
編碼問題,將檔案以ansi編碼儲存就不會亂碼了,c++ 11加入了編碼轉換,可以直接以utf8/utf16編碼處理字串,使用寬字串std::wstring
[cpp]
view plain
copy
#include
#include
//...
const
std::locale empty_locale = std::locale::empty();
typedef
std::codecvt_utf8<
wchar_t
> converter_type;
//std::codecvt_utf16
const
converter_type* converter =
newconverter_type;
const
std::locale utf8_locale = std::locale(empty_locale, converter);
std::wifstream fin(l"in.txt"
);
//input
fin.imbue(utf8_locale);
std::wstring text;
fin >> text;
std::wfstream fout;
fout.imbue(utf8_locale);
fout.open(l"out.txt"
, std::ios::out);
//output
fout << text;
方法三:
sdf
要想清楚剪下板內容
只要在command中鍵入 cmd c echo off clip 或作乙個右鍵選單登錄檔檔案執行即可 for win7 將如下內容拷貝到文字檔案裡,儲存為.reg檔案即可,然後執行這個檔案就ok windows registry editor version 5.00 hkey classes r...
C 剪下板操作
複製資料至剪下板 bool copytoclipboard const char pszdata,const int ndatalen return false 從剪下板中取得資料 bool gettextfromclipboard closeclipboard return true return...
C 剪下板程式設計
c 定義了乙個類system.windows.forms.clipboard來簡化剪下板操作,這個類有乙個靜態方法,主要有 clear 清除剪下板中的所有資料 containsdata,containsaudio,containsfliedroplist,containstext,containsi...