Newsgroup: it.comp.lang.visual-basic
Titolo: Runtime Error '521'  Unable to Open Clipboard

Salve a tutti,
in un mio programma scritto in VB6 utilizzo il controllo RichTextBox per
visualizzare del testo contenente delle piccole immagini (nel mio caso degli
smiles, tipicamente presenti in un messaggio di chat).
Per impostare il RichTextBox, utilizzo il classico metodo della "clipboard".
Ossia copio ed incollo di volta in volta nella clipboard, a secondo dei
casi, il testo o l'immagine che devo caricare nel RichTextBox.
Le righe incriminate sono queste:
       ' carico il testo a sx dell'emoticon nella clipboard
        Clipboard.Clear
        Clipboard.SetText Left$(testosms$, pos - 1)
        ret = SendMessage(RichTextBox1.hwnd, WM_PASTE, 0, 0&)
        ' carico l'immagine dello smile relativo all'emoticon
        Clipboard.Clear
        Clipboard.SetData ImageList4.ListImages(emoticode%).Picture
        ret = SendMessage(RichTextBox1.hwnd, WM_PASTE, 0, 0&)
Funziona tutto perfettamente, su centinaia di installazioni, senza mai
nessun problema.
Soltanto un utente, ieri, appena installato il mio programma, mi ha
segnalato il seguente errore:
" Runtime Error '521' Unable to Open Clipboard "
Sembra come se nel suo sistema sia impedito l'utilizzo della clipboard...
oppure non so cosa sia, ma purtroppo il mio programma va in errore! :(
Gli ho inviato un eseguibile dove ho eliminato SOLO le righe di cui sopra, e
con questo eseguibile funziona tutto perfettamente (ma ovviamente non vede
gli smiles grafici nel RichTextBox).
Sapete indicarmi dove sta il problema?
Non riesco proprio ad arrivarci, da solo...  :-((
Potrei certamente mettere un controllo d'errore, ed evitare l'utilizzo della
clipboard ove non disponibile.
Ma preferirei prima capire il motivo di quest'errore, e poi eventualmente
prendere una decisione...
Grazie a tutti
Bruno
ps: ovviamente, lo davo per scontato e non l'ho scritto, nel modulo
principale è presente la declare completa, con tutte sue le costanti, per
poter utilizzare la funzione SendMessage che trovate nelle righe di codice:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA"... ecc
ecc...

 Sembra come se nel suo sistema sia impedito l'utilizzo della clipboard...
Al tuo posto verificherei la effettiva accessibilità della clipboard, che
potrebbe essere limitata da un gestione troppo restrittiva dei privilegi
utente.
Prova ad eseguire il programma c:\windows\system32\clipbrd.exe e magari vedi
se hai problemi...
E magari accedi come amministratore nel PC in cui hai l'errore e varia i
diritti sul programma e sulle librerie interessate dalle API che stai
usando...

 usando...
hem... non so se questo mi è possibile... :-/
il pc non è mio, ma è di un utente, e vorrei evitare di fargli fare 
operazioni/esperimenti per risolvere questo problema.
il pc (e l'utente) si trovano in Turchia.
vorrei solo riuscire a capire come mai (ed in quali situazioni) si verifica 
il fatto che la clipboard non è accessibile all'applicazione. mi sembra 
davvero una cosa strana...


Non capisco perchè passi dalla Clipboard, che è sempre una pessima pratica, 
a meno che non sia espressamente richiesto dall'utente.
Prova a vedere se ad es. questo funziona:
http://www.vbforums.com/showthread.php?s=8d626808666cff9f5b54dbbf53a06198&p=2131039#post2131039
Ciao 

 
http://www.vbforums.com/showthread.php?s=8d626808666cff9f5b54dbbf53a06198&p=2131039#post2131039
Moooolto interessante, grazie!! Davvero!
Un'altra domanda.... ma come diavolo fate, voi di questo niusgruppo, ad 
avere sempre questi "assi nella manica"??!
;)
Grazie ancora, ciao
B. 


Veramente ho cercato adesso in google "insert picture richtextbox vb6" ;)
E' il secondo link, il primo usava il tuo sistema.
Ciao 

 Moooolto interessante, grazie!! Davvero!
Ma siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii...........              :-)))))
Funzionissima!!! Ed è pure più veloce del metodo clipboard!!!!
Grazie 1000, Fabio!!
Sono un centinaio di righe di codice in più.... macchissenefrega...  ;)
B.