private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { switch (e.ClickedItem.Name) { case "MenuItemCopy": this.txtSend.Copy(); break; case "MenuItemPaset": { System.Windows.Forms.IDataObject data = Clipboard.GetDataObject(); //从剪贴板中获取数据 if (data.GetDataPresent(typeof(Image))) //判断是否是图片类型 { MessageBox.Show(data.GetType().ToString()); } //this.txtSend.Paste(); } break; case "MenuItemCut": this.txtSend.Cut(); break; case "MenuItemDel": this.txtSend.SelectedText = ""; break; case "MenuItemSelAll": this.Focus(); this.txtSend.SelectAll(); break; } }
private static MemoryStream GetFileContentFromHGlobal(this System.Windows.Forms.IDataObject data, STGMEDIUM medium) { var innerDataField = data.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance); var oldData = (System.Windows.Forms.IDataObject)innerDataField.GetValue(data); var getDataFromHGLOBLALMethod = oldData.GetType().GetMethod("GetDataFromHGLOBLAL", BindingFlags.NonPublic | BindingFlags.Instance); return((MemoryStream)getDataFromHGLOBLALMethod.Invoke(oldData, new object[] { "FileContents", medium.unionmember })); }
/// <summary> /// Initializes a new instance of the class. /// </summary> /// <param name="underlyingDataObject">The underlying data object to wrap.</param> public RemoteDataObject(System.Windows.Forms.IDataObject underlyingDataObject) { //get the underlying dataobject and its ComType IDataObject interface to it this.underlyingDataObject = underlyingDataObject; comUnderlyingDataObject = (System.Runtime.InteropServices.ComTypes.IDataObject) this.underlyingDataObject; //get the internal ole dataobject and its GetDataFromHGLOBAL so it can be called later FieldInfo innerDataField = this.underlyingDataObject.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance); oleUnderlyingDataObject = (System.Windows.Forms.IDataObject)innerDataField.GetValue(this.underlyingDataObject); getDataFromHGLOBALMethod = oleUnderlyingDataObject.GetType().GetMethod("GetDataFromHGLOBAL", BindingFlags.NonPublic | BindingFlags.Instance); }
/// <summary> /// Initializes a new instance of the <see cref="OutlookDataObject"/> class. /// </summary> /// <param name="underlyingDataObject">The underlying data object to wrap.</param> public OutlookDataObject(System.Windows.Forms.IDataObject underlyingDataObject) { //get the underlying dataobject and its ComType IDataObject interface to it this._underlyingDataObject = underlyingDataObject; _comUnderlyingDataObject = (System.Runtime.InteropServices.ComTypes.IDataObject) this._underlyingDataObject; //get the internal ole dataobject and its GetDataFromHGLOBLAL so it can be called later var innerDataField = this._underlyingDataObject.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance); _oleUnderlyingDataObject = (System.Windows.Forms.IDataObject)innerDataField.GetValue(this._underlyingDataObject); _getDataFromHgloblalMethod = _oleUnderlyingDataObject.GetType().GetMethod("GetDataFromHGLOBLAL", BindingFlags.NonPublic | BindingFlags.Instance); }
/// <summary> /// Initializes a new instance of the <see cref="DataObject"/> class. /// </summary> /// <param name="underlyingDataObject">The underlying data object to wrap.</param> public DataObject(IDataObject underlyingDataObject) { //get the underlying dataobject and its ComType IDataObject interface to it _underlyingDataObject = underlyingDataObject; _comUnderlyingDataObject = (System.Runtime.InteropServices.ComTypes.IDataObject)_underlyingDataObject; //get the internal ole dataobject and its GetDataFromHGLOBLAL so it can be called later var innerDataField = _underlyingDataObject.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance); // ReSharper disable once PossibleNullReferenceException _oleUnderlyingDataObject = (IDataObject)innerDataField.GetValue(_underlyingDataObject); _getDataFromHgloblalMethod = _oleUnderlyingDataObject.GetType() .GetMethod("GetDataFromHGLOBLAL", BindingFlags.NonPublic | BindingFlags.Instance); }