c++ 获取剪切板拷贝文件的路径
时间: 2023-07-16 08:15:46 浏览: 226
在 Windows 操作系统中,可以使用以下代码获取剪切板中拷贝的文件路径:
```cpp
#include <Windows.h>
#include <iostream>
int main()
{
if (!OpenClipboard(nullptr)) {
std::cerr << "Failed to open clipboard." << std::endl;
return 1;
}
// 获取剪切板中的数据句柄
HANDLE hData = GetClipboardData(CF_HDROP);
if (hData == nullptr) {
std::cerr << "Failed to get clipboard data." << std::endl;
CloseClipboard();
return 1;
}
// 获取文件路径
HDROP hDrop = static_cast<HDROP>(hData);
UINT numFiles = DragQueryFile(hDrop, 0xFFFFFFFF, nullptr, 0);
for (UINT i = 0; i < numFiles; ++i) {
UINT size = DragQueryFile(hDrop, i, nullptr, 0);
std::wstring filePath(size + 1, L'\0');
DragQueryFile(hDrop, i, &filePath[0], size + 1);
std::wcout << filePath << std::endl;
}
CloseClipboard();
return 0;
}
```
这段代码使用了 Windows API 来打开剪切板,获取剪切板中的数据句柄,然后通过 `DragQueryFile` 函数获取文件路径。需要注意的是,剪切板中的数据类型为 `CF_HDROP`,表示文件拖拽操作。如果剪切板中没有拷贝文件,则无法获取文件路径。
阅读全文