IShellBrowser的获取

简介:

获取IShellBrowser
要获取该接口只能通过IServiceProvider接口,不能通过CoCreateInstance,估计是因为该接口为纯虚类
下面是获取该接口的方法:

 
  1. // 通过该接口可以获取所有打开的shell窗口(例如folder窗口)  
  2. IShellWindows *psw = NULL;  
  3. hr = ::CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_ALL, IID_IShellWindows, (void**)&psw);  
  4.  
  5. // 获取打开的shell窗口个数.  
  6. long lCount = 0;  
  7. hr = psw->get_Count(&lCount);  
  8.  
  9. //SWC_EXPLORER 指出获取explorer打开的窗口,如果没有打开任何窗口则会调用失败  
  10. //VISTA及以后的版本可以用SWC_DESKTOP,此时获取的是桌面窗口,即使没有其他shell  
  11. //窗口,该调用也不会失败.  
  12. VARIANT vpidl;  
  13. vpidl.vt = VT_UI4;  
  14. vpidl.ulVal = SWC_EXPLORER;  
  15. IDispatch *pdisp = NULL;  
  16. hr = psw->Item(vpidl, &pdisp);  
  17.  
  18. // 这个接口是一个控件接口,具体看MSDN吧  
  19. IWebBrowserApp *pwba = NULL;  
  20. hr = pdisp->QueryInterface(IID_IWebBrowserApp, (void**)&pwba);  
  21.  
  22. // 这个接口类厂很像,用于创建另外一些接口对象,详细内容参考MSDN.  
  23. IServiceProvider *psp = NULL;  
  24. hr = pwba->QueryInterface(IID_IServiceProvider, (void**)&psp);  
  25.  
  26. // SID_STopLevelBrowser指出获取最顶层的那个shell窗口.  
  27. // 如果不明白可以调用该接口的GetControlWindow成员函数,然后再用sp++  
  28. // 查看一下,就知道是哪个窗口了。  
  29. IShellBrowser *psb = NULL;  
  30. hr = psp->QueryService(SID_STopLevelBrowser, IID_IShellBrowser, (void**)&psb);  
  31.  
  32. //使用该shell窗口浏览其它目录(pdil指出目录路径)内容,当然也可以再创建新窗口  
  33. //psb->BrowseObject(pdil, ...)  
  34. ... 

 










本文转自jetyi51CTO博客,原文链接: http://blog.51cto.com/jetyi/560744,如需转载请自行联系原作者




相关文章
|
Web App开发
实时分析HTTP/HTTPS数据流(HTTP Analyzer)
简述 HTTP Analyzer是一款实时分析HTTP/HTTPS数据流的工具。它可以实时捕捉HTTP/HTTPS协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的URL地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个非常有用的分析、调试和诊断的开发工具。 HTTP Analyzer可以集成
2540 0
|
网络协议 API
让每个进程不同外网 IP,实现局部单窗口单 IP,驱动级网络加速器原理!
为解决游戏多开IP限制问题,可采用API HOOK、LSP劫持或驱动层拦截(WFP/TDI)结合SOCKS5转发数据,实现每个进程独立的外网IP。LSP方法需HOOK多个网络函数,如WSPCONNECT等。驱动层中,WFP适用于Win7以上系统,全面拦截,TDI兼容所有系统但拦截不全。提供了一个自编写的驱动层代理示例,支持全局和局部IP设置,适用于每个进程不同IP,长期维护,欢迎使用。下载链接:http://down.8u18.com/down/jsq.rar。附图片展示。
9739 0
|
开发框架 前端开发 Linux
开源项目推荐:C++ Web/Http Server/Rest开发框架(请重点关注Oat++和搜狗workflow)
开源项目推荐:C++ Web/Http Server/Rest开发框架(请重点关注Oat++和搜狗workflow)
4958 0
|
9月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
SQL
UNIQUE
【11月更文挑战第14天】
472 6
win32编程 -- 系统菜单及右键菜单
win32编程 -- 系统菜单及右键菜单
237 1
|
监控 Windows
Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
1317 0
Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
|
网络协议 搜索推荐
阿里云DNS常见问题之阿里云DNS企业邮箱收不到国外的邮件如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
存储 前端开发 JavaScript
使用JavaScript实现动态生成并管理购物车的深入解析
使用JavaScript实现动态生成并管理购物车的深入解析