dahall / Vanara

A set of .NET libraries for Windows implementing PInvoke calls to many native Windows APIs with supporting wrappers.
MIT License
1.79k stars 193 forks source link

Try set custom clipboard format with string data might lead to exception due to ClipCorrespondingTypeAttribute is null #389

Closed zhuxb711 closed 1 year ago

zhuxb711 commented 1 year ago

Example:

IDataObject DataObject = NativeClipboard.CreateEmptyDataObject();
DataObject.SetData("MyCustomFormat", "My Custom String"); //Throw in here
NativeClipboard.SetDataObject(DataObject);

https://github.com/dahall/Vanara/blob/2829327b2630381d60b25ef3692a2d0c53896971/PInvoke/Shell32/Clipboard.cs#L756

Replace "attr.EncodingType" with "attr?.EncodingType" should help fix this issue. Variable "attr" might be null in this case.

private static Encoding GetEncoding(ClipCorrespondingTypeAttribute attr) => (Encoding)Activator.CreateInstance(attr?.EncodingType ?? typeof(UnicodeEncoding)); 
zhuxb711 commented 1 year ago

Looking forward to your new version 3.4.14~