c++中对剪贴板的操作一览
时间: 2023-07-16 12:15:17 浏览: 64
在 C++ 中,可以通过调用 Windows API 函数来访问剪贴板。以下是一些常用的剪贴板操作函数:
1. `OpenClipboard(HWND hWndNewOwner)`:打开剪贴板,并指定新的所有者窗口。
2. `EmptyClipboard()`:清空剪贴板。
3. `CloseClipboard()`:关闭剪贴板。
4. `GetClipboardData(UINT uFormat)`:从剪贴板中获取数据。`uFormat` 参数指定了所需的数据格式。
5. `SetClipboardData(UINT uFormat, HANDLE hMem)`:将数据设置到剪贴板中。`uFormat` 参数指定了数据格式,`hMem` 参数指定了数据句柄。
以下是一个简单的示例代码,演示如何将文本设置到剪贴板中:
```c++
#include <windows.h>
#include <iostream>
int main() {
if (!OpenClipboard(NULL)) {
std::cerr << "Failed to open clipboard" << std::endl;
return 1;
}
if (!EmptyClipboard()) {
std::cerr << "Failed to empty clipboard" << std::endl;
CloseClipboard();
return 1;
}
const char* text = "Hello, world!";
int textLength = strlen(text) + 1;
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, textLength);
if (!hMem) {
std::cerr << "Failed to allocate memory" << std::endl;
CloseClipboard();
return 1;
}
char* pMem = (char*)GlobalLock(hMem);
if (!pMem) {
std::cerr << "Failed to lock memory" << std::endl;
GlobalFree(hMem);
CloseClipboard();
return 1;
}
memcpy(pMem, text, textLength);
GlobalUnlock(hMem);
if (!SetClipboardData(CF_TEXT, hMem)) {
std::cerr << "Failed to set clipboard data" << std::endl;
GlobalFree(hMem);
CloseClipboard();
return 1;
}
CloseClipboard();
std::cout << "Text has been copied to clipboard!" << std::endl;
return 0;
}
```