/// <summary>
        /// Converts an inputshare clipboard data type into a windows dataobject
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static InputshareDataObject ConvertToWindows(ClipboardDataBase data)
        {
            if (data is ClipboardVirtualFileData fd)
            {
                List <FileAttributes> files = fd.AllFiles;
                InputshareDataObject  o     = new InputshareDataObject(files);
                return(o);
            }
            else if (data is ClipboardImageData imgData)
            {
                try
                {
                    using (MemoryStream ms = new MemoryStream(imgData.ImageData))
                    {
                        Image bmp = Image.FromStream(ms);
                        return(new InputshareDataObject(bmp));
                    }
                }
                catch (Exception ex)
                {
                    ISLogger.Write("Error converting image data: " + ex.Message);
                    return(null);
                }
            }
            else if (data is ClipboardTextData textData)
            {
                return(new InputshareDataObject(textData));
            }

            throw new ArgumentException("Unrecognized data type " + data.GetType().FullName);
        }
        public override void SetClipboardData(ClipboardDataBase data)
        {
            InputshareDataObject obj = null;

            try
            {
                obj = ClipboardTranslatorWindows.ConvertToWindows(data);
            }
            catch (Exception ex)
            {
                ISLogger.Write("Failed to convert clipboard data: " + ex.Message);
            }

            if (obj != null)
            {
                cbHookWindow.SetClipboardData(obj);
            }
        }