我有一個COM對象(VB6 ActiveX exe),它通過interop返回一個stdole.StdPicture。有沒有辦法將其轉換爲System.Drawing.Icon?還是有更好的返回類型爲我的COM對象返回?將stdole.StdPicture轉換爲System.Drawing.Icon
我想要做的是讓我的C#代碼使用我的VB6代碼中的圖標。
我有一個COM對象(VB6 ActiveX exe),它通過interop返回一個stdole.StdPicture。有沒有辦法將其轉換爲System.Drawing.Icon?還是有更好的返回類型爲我的COM對象返回?將stdole.StdPicture轉換爲System.Drawing.Icon
我想要做的是讓我的C#代碼使用我的VB6代碼中的圖標。
好,通過試驗和錯誤我找到了解決辦法。
在VB6代碼,返回圖標處理,而不是圖標(Icon.Handle返回類型是可以返回的作爲長OLE_HANDLE
在VB6代碼:
Public Function GetIconHandle() as long
GetIconHandle = myForm.Icon.Handle
End Function
在.NET代碼:
IntPtr iconHandle = (IntPtr)COMDll.GetIconHandle(); // returns an int for the handle to the icon.
Icon myIcon = Icon.FromHandle(icnoHandle);
如果StdPicture的Type是vbPicTypeIcon那麼你可以撥打:
var icon = Icon.FromHandle(pic.Handle);
我試過了 - 拋出System.RuntimeInteropServices.COMException:災難性故障 – 2009-08-28 12:47:17
嗨,你有沒有找到任何解決方案,我在這裏得到我的錯誤:VAR p' ic = user.GetPicture(); (災難性故障) – PernerOl 2015-10-06 19:14:10