Excel的C#外接程序.
我希望使用CustomTaskPane.Window属性,以了解窗格是否属于活动工作簿。这是我的密码:
var activeWnd = Globals.ThisAddIn.Application.ActiveWindow;
var pane = this.CustomTaskPanes.Add(myUSerCtrl, "title", activeWnd);
IntPtr panePtr = Marshal.GetIUnknownForObject(pane.Window);
IntPtr activeWndPtr= Marshal.GetIUnknownForObject(activeWnd);
bool sameWindows = panePtr.Equals(activeWndPtr);当我检查sameWindows时,它是false。指针值也不同,我的代码是否有问题,还是这些属性不可靠?两个指针不应该指向同一个窗口吗?不然我怎么比较他们呢?
谢谢
发布于 2019-07-04 07:20:34
这个怎么样:
if((Microsoft.Office.Interop.Excel.Window)myPane.Window).Hwnd
==
Globals.ThisAddIn.Application.ActiveWindow.Hwnd)能用吗?我试过了,而且成功了,但我想知道这样做是否正确?
发布于 2019-07-03 20:43:13
因此,您可以获得指向IUnknown接口的指针,这在那里没有任何意义。
相反,我建议将窗口转换为IOLEWindow接口,然后调用GetWindow方法。资源管理器和检查器窗口都实现指定的接口。然后,您可以比较窗口句柄。
https://stackoverflow.com/questions/56877357
复制相似问题