c++ GetClipboardDataCF_HDROP 获取复制的文件并保存路径在char selectedFiles
以下是一个示例代码,可以获取剪贴板上复制的文件路径并保存在char** selectedFiles中:
#include <windows.h>
#include <shellapi.h>
void GetClipboardFiles(char*** selectedFiles, int* fileCount) {
if (!IsClipboardFormatAvailable(CF_HDROP)) {
*fileCount = 0;
return;
}
if (!OpenClipboard(NULL)) {
*fileCount = 0;
return;
}
HDROP hDrop = (HDROP)GetClipboardData(CF_HDROP);
if (hDrop == NULL) {
CloseClipboard();
*fileCount = 0;
return;
}
int count = DragQueryFile(hDrop, -1, NULL, 0);
if (count <= 0) {
CloseClipboard();
*fileCount = 0;
return;
}
*selectedFiles = new char*[count];
for (int i = 0; i < count; i++) {
int pathLen = DragQueryFile(hDrop, i, NULL, 0);
if (pathLen > 0) {
(*selectedFiles)[i] = new char[pathLen + 1];
DragQueryFile(hDrop, i, (*selectedFiles)[i], pathLen + 1);
}
}
*fileCount = count;
CloseClipboard();
}
int main() {
char** selectedFiles;
int fileCount;
GetClipboardFiles(&selectedFiles, &fileCount);
for (int i = 0; i < fileCount; i++) {
printf("%s\n", selectedFiles[i]);
delete[] selectedFiles[i];
}
delete[] selectedFiles;
return 0;
}
请注意,这段代码使用了Windows API来操作剪贴板和文件路径。在使用之前,请确保包含了windows.h和shellapi.h头文件,并且链接了shell32.lib库
原文地址: https://www.cveoy.top/t/topic/hHDP 著作权归作者所有。请勿转载和采集!