De quelle manière votre code ci-dessus ne fonctionne pas? Lorsque j'essaie le code équivalent en C#, j'obtiens une exception "CloseClipboard Failed (exception de HRESULT: 0x800401D4 (CLIPBRD_E_CANT_CLOSE))" lors de l'appel de Clipboard.SetDataObject (iData).
Cependant, la solution suivante fait le travail pour moi:
// save
Dictionary<String, Object> d = new Dictionary<String, Object>();
IDataObject ido = Clipboard.GetDataObject();
foreach (String s in ido.GetFormats(false))
d.Add(s, ido.GetData(s));
// ...
// restore
var da = new DataObject();
foreach (String s in d.Keys)
da.SetData(s, d[s]);
Clipboard.SetDataObject(da);
Nous vous remercions de votre suggestion, mais cela ne répond pas à ma question. –
Eh bien, ce serait bien si vous incluez la raison pour laquelle vous voulez faire cela dans votre question. Ensuite, il est plus facile de concevoir une solution qui fait ce que vous voulez. Je considère toujours que le blocage temporaire du presse-papiers est une idée très stupide. – Joey
Il n'y a aucune raison valable de le faire. "Les programmes ne doivent pas transférer des données dans notre presse-papiers sans une instruction explicite de l'utilisateur." - Charles Petzold, Programmation Windows 3.1, Microsoft Press, 1992 –