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,如需转载请自行联系原作者




相关文章
|
1月前
|
C++ UED 索引
C++ Qt开发:StatusBar底部状态栏组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`QStatusBar`底部状态栏组件的常用方法及灵活运用。`QStatusBar` 是 Qt 中用于在主窗口底部显示状态信息的部件。它通常用于向用户提供应用程序的当前状态、进度信息、或者其他与应用程序运行相关的消息。通过在状态栏上显示文本、永久部件、进度条等内容,可以为用户提供清晰的反馈和实时信息。在设计应用程序界面时,使用状态栏有助于提升用户体验。
51 0
C++ Qt开发:StatusBar底部状态栏组件
|
10月前
|
机器学习/深度学习 传感器 文字识别
【新知测评实验室】解谜扫描全能王——“智能高清滤镜”黑科技
扫描技术已经被广泛应用于如办公(文件、名片、发票)、学习(笔记、试卷)、个人生活(证件、照片)、商务(收据、发票)、法律(合同、证据)等等各个领域。然而,现实图像中常常会出现一系列模糊、阴暗、褶皱、污渍、光线、透字等问题,如下面是一张很常见的笔记照片,照片中的褶皱和版面弯曲严重影响了图像质量和可读性,经过传统扫描工具如打印机、扫描仪扫描后仍然难以到达实用性和可用性。近期,合合信息旗下扫描全能王全新上线了一款“智能高清滤镜”黑科技,。本篇文章将对此一探究竟,从深层原理和测试对比来揭开其神秘面纱。
|
10月前
|
机器学习/深度学习 存储 人工智能
图像处理的未来:揭秘扫描全能王的AI驱动创新
近期,合合信息旗下扫描全能王推出全新功能“智能高清滤镜”,从8月15日起正式上线。这一功能不同于传统扫描软件,使用时无需考虑拍摄角度、光源等因素,因为它能智能检测图像问题,自动优化处理,解决模糊、阴暗等难题。这项创新得益于智能扫描引擎AI-Scan,从图像处理、文字识别到版面还原,AI-Scan用智能的方式检测、解决图像问题,实现所拍即所得的效果,为生活和生产中90%的扫描难题提供一键解决方案。这一功能代表了AI技术在图像处理领域的巨大进步,为用户带来更智能、更精准的图像处理体验。
468 0
|
Web App开发 安全 内存技术
新版谷歌Chrome取消对PPAPI插件支持后,浏览器网页打开编辑保存微软Office、金山WPS文档解决方案
最近陆续看到一些大学发布公告,谷歌Chrome取消了对PPAPI插件支持,导致某些在线Office厂家产品将无法在谷歌Chrome107及以上版本运行,被迫更换360浏览器或者使用低版本Chrome浏览器苟延残喘。
311 0
新版谷歌Chrome取消对PPAPI插件支持后,浏览器网页打开编辑保存微软Office、金山WPS文档解决方案
|
网络协议
驱动开发:内核RIP劫持实现DLL注入
本章将探索内核级DLL模块注入实现原理,DLL模块注入在应用层中通常会使用`CreateRemoteThread`直接开启远程线程执行即可,驱动级别的注入有多种实现原理,而其中最简单的一种实现方式则是通过劫持EIP的方式实现,其实现原理可总结为,挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,并把相关的指令机器码和数据拷贝到里面去,然后直接修改目标进程EIP使其强行跳转到我们拷贝进去的相关机器码位置,执行相关代码后,然后再次跳转回来执行原始指令集。
333 0
|
数据可视化 JavaScript Go
Golang:https证书有效期检测
Golang:https证书有效期检测
265 0
|
XML SQL JSON
推荐 9 个 爱不释手的 JSON 工具!
【51CTO.com快译】JSON(JavaScript对象标注)是一种流行的轻量级数据交换格式,在网络上已很常见。众所周知,JSON让开发人员易于使用,又让机器易于解析和生成。 JSON吸引了工具构建者的注意,它们开发了用于重新格式化、验证和解析JSON的众多工具,这不足为奇。这些工具既有在Web浏览器中运行的在线实用程序,又有面向代码编辑器和IDE的插件,比如Visual Studio Code和Eclipse。 下面介绍了其中九款工具。
1118 0
|
流计算 C++
c++实现获取进程内存空间
进程内存空间获取
819 0
c++实现获取进程内存空间