#include #include // CSVデータをクリップボードにコピーする関数 void CopyCSVToClipboard(const char* csvData) { if (OpenClipboard(NULL)) { EmptyClipboard(); // CSVデータを文字列形式でクリップボードにセット HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, strlen(csvData) + 1); if (hMem != NULL) { char* memData = (char*)GlobalLock(hMem); if (memData != NULL) { strcpy_s(memData, strlen(csvData) + 1, csvData); GlobalUnlock(hMem); SetClipboardData(CF_TEXT, hMem); } else { printf("Failed to lock memory for clipboard data.\n"); GlobalFree(hMem); // メモリの解放 } } else { printf("Failed to allocate memory for clipboard data.\n"); } CloseClipboard(); } else { printf("Failed to open the clipboard.\n"); } } // クリップボードからCSVデータを取得する関数 char* GetCSVFromClipboard() { char* csvData = NULL; if (OpenClipboard(NULL)) { HANDLE hClipboardData = GetClipboardData(CF_TEXT); if (hClipboardData != NULL) { char* memData = (char*)GlobalLock(hClipboardData); if (memData != NULL) { csvData = _strdup(memData); // メモリのコピー GlobalUnlock(hClipboardData); } else { printf("Failed to lock memory from clipboard data.\n"); } } else { printf("Failed to retrieve clipboard data.\n"); } CloseClipboard(); } else { printf("Failed to open the clipboard.\n"); } return csvData; } int main() { // CSVデータをクリップボードにコピー const char* sampleCSV = "Name,Age,Occupation\nJohn,25,Engineer\nAlice,30,Doctor"; CopyCSVToClipboard(sampleCSV); // クリップボードからCSVデータを取得 char* retrievedCSV = GetCSVFromClipboard(); if (retrievedCSV != NULL) { printf("Retrieved CSV data:\n%s\n", retrievedCSV); free(retrievedCSV); } else { printf("Failed to retrieve CSV data from the clipboard.\n"); } return 0; }