Bluesteel
11.03.2009, 12:39
Text in die Windows-Zwischenablage schreiben und daraus lesen
Ist ne ganz praktische sache denke ich xD
so hier nun der code
/*
Read/write text from/to the Windows clipboard
Clear clipboard with EmptyClipboard() function
Dependencies: CString
*/
CString GetClipboardText()
{
HANDLE string;
char ret_text[4096];
// open clipboard for task
if (OpenClipboard(0))
{
// try reading if successful
if ((string = GetClipboardData(CF_TEXT))!=0)
{
strncpy(ret_text, (char *) string, 4096);
ret_text[4095] = '\0';
CloseClipboard();
return ret_text ;
}
else
{
CloseClipboard();
return "";
}
}
return "";
}
bool CopyToClipboard(CString strText)
{
bool bRet = true;
if (strText.GetLength() > 0)
{
HGLOBAL hGlobalMemory;
LPVOID lpGlobalMemory;
// allocate global memory
hGlobalMemory = GlobalAlloc(GHND, strText.GetLength() + 1);
if (hGlobalMemory)
{
// lock block to get a pointer to it
lpGlobalMemory = GlobalLock(hGlobalMemory);
// copy string to the block
lpGlobalMemory = lstrcpy((char *) lpGlobalMemory, strText.GetBuffer(strText.GetLength()));
// free memory
GlobalUnlock(hGlobalMemory);
// open clipboard for task
if (OpenClipboard(0))
{
EmptyClipboard();
// try writing if successful
if (!SetClipboardData(CF_TEXT, hGlobalMemory))
{
// error writing to clipboard
bRet = false;
}
CloseClipboard();
}
}
}
return bRet;
}
Ist ne ganz praktische sache denke ich xD
so hier nun der code
/*
Read/write text from/to the Windows clipboard
Clear clipboard with EmptyClipboard() function
Dependencies: CString
*/
CString GetClipboardText()
{
HANDLE string;
char ret_text[4096];
// open clipboard for task
if (OpenClipboard(0))
{
// try reading if successful
if ((string = GetClipboardData(CF_TEXT))!=0)
{
strncpy(ret_text, (char *) string, 4096);
ret_text[4095] = '\0';
CloseClipboard();
return ret_text ;
}
else
{
CloseClipboard();
return "";
}
}
return "";
}
bool CopyToClipboard(CString strText)
{
bool bRet = true;
if (strText.GetLength() > 0)
{
HGLOBAL hGlobalMemory;
LPVOID lpGlobalMemory;
// allocate global memory
hGlobalMemory = GlobalAlloc(GHND, strText.GetLength() + 1);
if (hGlobalMemory)
{
// lock block to get a pointer to it
lpGlobalMemory = GlobalLock(hGlobalMemory);
// copy string to the block
lpGlobalMemory = lstrcpy((char *) lpGlobalMemory, strText.GetBuffer(strText.GetLength()));
// free memory
GlobalUnlock(hGlobalMemory);
// open clipboard for task
if (OpenClipboard(0))
{
EmptyClipboard();
// try writing if successful
if (!SetClipboardData(CF_TEXT, hGlobalMemory))
{
// error writing to clipboard
bRet = false;
}
CloseClipboard();
}
}
}
return bRet;
}