S
Bitte sehr:
#include <windows.h>
#include <shlobj.h>
#ifndef HDROP
typedef HANDLE HDROP; // vs2005 bug
#endif
int _tmain(int argc, _TCHAR* argv[])
{
HWND hwnd = CreateWindow(WC_DIALOG, _T(""), 0, 0, 0, 0, 0,0, 0, 0, 0);
OpenClipboard(hwnd);
EmptyClipboard();
char *filepath = "C:\\Dokumente und Einstellungen\\sapero\\Lokale Einstellungen\\Temp\\RegistryLog.txt";
int size = sizeof(DROPFILES) + (int)strlen(filepath)+2;
HDROP hdrop = (HDROP)GlobalAlloc(GMEM_MOVEABLE, size);
DROPFILES *df = (DROPFILES*)GlobalLock(hdrop);
ZeroMemory(df, size);
df->pFiles = sizeof(DROPFILES); // string offset
//df->pt.x = df->pt.y = 0;
//df->pt.fNC = true/false; // nonclient
//df->fWide = FALSE; // nicht unicode
strcpy((char*)&df[1], filepath); // string1\0string2\0string3\0\0
GlobalUnlock(hdrop);
SetClipboardData(CF_HDROP, hdrop);
DWORD preferred = DROPEFFECT_COPY;
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(DWORD));
DWORD *pData = (DWORD*)GlobalLock(hData);
*pData = preferred;
GlobalUnlock(hData);
SetClipboardData(RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT), hData);
size = (int)strlen(filepath)+1;
hData = GlobalAlloc(GMEM_MOVEABLE, size);
char *psData = (char*)GlobalLock(hData);
strcpy(psData, filepath);
GlobalUnlock(hData);
SetClipboardData(RegisterClipboardFormat(CFSTR_FILENAMEA), hData);
CloseClipboard();
DestroyWindow(hwnd);
return 0;
}