1. 程式人生 > >【語言-C++】 Clipboard(剪貼簿)1-監聽剪貼簿更新

【語言-C++】 Clipboard(剪貼簿)1-監聽剪貼簿更新

監聽剪貼簿

C++原始碼

新增訊息

BEGIN_MESSAGE_MAP(CClipboardDlg, CDialogEx)
	ON_WM_CLIPBOARDUPDATE()
END_MESSAGE_MAP()

新增監聽

BOOL CClipboardDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	AddClipboardFormatListener(this->GetSafeHwnd());	
	return TRUE;  // 除非將焦點設定到控制元件,否則返回 TRUE
}

新增訊息處理

class CClipboardDlg : publicCDialogEx
{
public:
    afx_msg void OnClipboardUpdate();
};
 
void CClipboardDlg::OnClipboardUpdate()
{
OutputDebugString(_T("剪貼簿更新\n"));
    CDialogEx::OnClipboardUpdate();
}

測試

使用Ctrl+C複製檔案,看看輸出視窗是否有“剪貼簿更新”?

注意

如果出現如下圖所示“無法定位程式輸入點AddClipboardFormatListener於動態連線庫USER32.dll上。”的情況,建議使用::LoadLibraryGetProcAddress函式手動載入一個與“C:\WINDOWS\system32\User32.dll”版本不一致新的DLL,可以去網上下載也可以從別的電腦系統裡面拷貝,一般情況您找到的User32.dll是無法替換“C:\WINDOWS\system32\User32.dll”,因為有太多的程式佔用了“C:\WINDOWS\system32\User32.dll”,所以想要替換這個dll一般都要重灌系統。所以放在自己程式的同一個目錄下就行了,如果還是載入失敗,很有可能你的系統不相容這個dll,如果不想安裝電腦請使用別的電腦。經測試xp上“5.1.2600.5512”不含有該介面函式,win7“6.1.7601.17514”擁有該介面函式。