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!!!