muy buenas ando bastante perdido con el portapapeles de windows
tengo la funcion getPortapapeles y setPortapapeles.
el get funciona correctisimo pero en cambio el set no me funciona del todo bien, me explico:
aqui intento copiar y pegar lo que tenemos en el portapapeles
main() {
char *buffer = new char[1024];
buffer = getPortapapeles();
setPortapapeles(buffer);// no me funciona el set
}
en cambio si solo queremos pegar al portapapeles todo va correcto
main() {
char *buffer = new char[1024];
// buffer = getPortapapeles();
strcpy(buffer,"esto si que funciona");
setPortapapeles(buffer);// inserta correctamente
}
aqui las dos funciones get & set que por separado funcionan a la perfeccion pero juntas dejan mucho que desear
char * getPortapapeles() {
char buffer[1024];
if ( OpenClipboard(NULL) )
{
HANDLE hData = GetClipboardData( CF_TEXT );
if (!hData) return 0;
char * buffer = (char*)GlobalLock( hData );
GlobalUnlock( hData );
CloseClipboard();
return buffer;
}
return 0;
}
setPortapapeles(char *str) {
if (OpenClipboard(NULL))
{
HGLOBAL hClipboardData;
char * pchData;
EmptyClipboard();
hClipboardData = GlobalAlloc(GMEM_DDESHARE, strlen(str)+1);
pchData = (char*)GlobalLock(hClipboardData);
strcpy(pchData, str);
GlobalUnlock(hClipboardData);
SetClipboardData( CF_TEXT,hClipboardData); //CF_TEXT CF_HDROP
CloseClipboard();
}
}
alguien es tan amable de decirme porque me fallan?
gracias!!!