首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CustomTaskPane.Window区分窗格

使用CustomTaskPane.Window区分窗格
EN

Stack Overflow用户
提问于 2019-07-03 20:15:57
回答 2查看 138关注 0票数 0

Excel的C#外接程序.

我希望使用CustomTaskPane.Window属性,以了解窗格是否属于活动工作簿。这是我的密码:

代码语言:javascript
复制
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。指针值也不同,我的代码是否有问题,还是这些属性不可靠?两个指针不应该指向同一个窗口吗?不然我怎么比较他们呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-07-04 07:20:34

这个怎么样:

代码语言:javascript
复制
if((Microsoft.Office.Interop.Excel.Window)myPane.Window).Hwnd     
== 
Globals.ThisAddIn.Application.ActiveWindow.Hwnd)

能用吗?我试过了,而且成功了,但我想知道这样做是否正确?

票数 1
EN

Stack Overflow用户

发布于 2019-07-03 20:43:13

因此,您可以获得指向IUnknown接口的指针,这在那里没有任何意义。

相反,我建议将窗口转换为IOLEWindow接口,然后调用GetWindow方法。资源管理器和检查器窗口都实现指定的接口。然后,您可以比较窗口句柄。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56877357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档