抓狂的Namespace Shell Extension (8)

Windows下用MSYS2搭建C++开发环境:GCC/CMake配置实战 在Windows上进行C++跨平台开发时,开发者常面临MSVC与GCC编译器差异、CMake构建系统不兼容等问题。MSYS2作为一款在Windows上提供POSIX兼容层的工具链环境,通过pacman包管理器集成GCC、CMake、Ninja等核心组件,成为许多开发者构建跨平台C++工程的首选方案。它既保留了接近Linux原生的命令行体验,又生成原生Windows可执行文件,无需额外运行时依赖。相比WSL的跨文件系统IO延迟和Cygwin的重型模拟层,MSYS2在编译速度与易用性上取得平衡。本文详细梳理MS 阅读详情
这次说的是剪贴板格式 vs. 上下文菜单&属性页之间的关系。这种关系并非相声和水利的关系。
 
为了更好地证明SEF的强大威力,同时为了更方便自己在网上down东西,决定写一个non-rooted NSE:网络硬盘,把@163.com的邮箱变成一个虚拟硬盘。网上已经有类似的东西,叫做GmailDrive,可惜一来不公开源码,二来上传大文件的时候太费劲。
 
WebDrive是植根在desktop上的non-rooted NSE,在经过10分钟的工作之后,建议了一个小框架,可以在桌面生成一个小图标,并且有了基本的树型结构,当然是虚拟的数据,没有从网易直接拉HTML。
 
但是发现,桌面上的图标的右键菜单(上下文菜单)里面居然没有我的自定义菜单和属性菜单项。好了,下断点大法。
 
结果是发现两个接口的Initialize函数都被调用过,但是下一步的接口再没被调用。为什么呢?
 
观察Debugger的output窗口,发现在Initialize()之后有个com exception。看地址来自webdisk.dll。找到对应的函数之后,发现是在IDataObjectImpl的GetData方法中。在这里,代码会检查static_cast<T*>(this)->OnGetData()的返回值,如果FAILED(),就抛出一个COM异常。
 
下断点在这里,发现tymed居然是TYMED_NULL,而不是任何我们已经定义的格式。这是为什么?!
 
好了,看看别人是怎么处理的。 :)
 
写一个简单的console程序,取得My Documents的接口,调它的IDataObject::GetData,跟进去看看。。。。。。。
 
原来如此:Explorer会调用non-rooted NSE的这个接口,查询是否有数据的时候,用TYMED_NULL当探路石。这个时候,只要返回E_INVALIDARG就可以。Explorer并不真的需要这些数据。原来是自己的代码错误检查太严了。
 
好了,知道了原理,把代码修改一下,如果是non-rooted模式,并且检查点是在根节点的话,就放行TYMED_NULL。
Ubuntu 12.04 部署 WordPress 4.9.x 兼容实践指南 WordPress 是基于 PHP 的主流开源内容管理系统,其运行依赖于特定版本的 PHP、MySQL 和 Web 服务器环境。理解 WordPress 版本与 PHP 兼容性原理,是保障老旧系统稳定运行的关键技术基础;PHP 5.3 作为承上启下的经典版本,虽已停止维护,但在嵌入式、工控、教育等边缘场景中仍具工程价值。本文聚焦 LAMP 栈底层兼容逻辑,解析 Apache 2.2 + mod_php + MySQL 5.5 组合如何支撑 WordPress 4.9.x 在 Ubuntu 12.04 上实现 阅读详情

相关推荐

蓝桥杯C/C++B组省赛实战指南:从环境配置到题解避坑

蓝桥杯C/C++B组省赛并非单纯考察算法能力,而是一场融合工程规范、环境适配与临场鲁棒性的综合能力测试。其核心在于理解隐含约束、适配GCC 5.4/C++11评测环境、严守输入输出格式,并在暴力可行前提下优先选择可验证的实现路径。区别于LeetCode的黑盒返回值判题,蓝桥杯采用全匹配黑盒评测,输出格式错误即0分,且不提示具体位置;同时要求代码具备状态机思维、内存安全意识与跨平台兼容性。本文聚焦真实考场高频痛点——VS Code配置陷阱、scanf空格解析失败、SG函数打表边界、段错误定位及应急模板手写——

weixin_30820077的博客 367

抓狂的Namespace Shell Extension (2)

写了个新玩具:RarFS。实际上就是个namespace extension,可以把rar在资源管理器里面(explorer)虚拟成文件夹。 利用了rooted namespace extension和shell default view。文件信息的获取是通过管道操作从rar获取的。 需要的请来信netex@163.com。 :)

netex的专栏 4007

五个shell extension源代码

五个shell extension源代码

window右键管理

HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\

拱卒的博客 2170

最方便的windows右键管理软件_支持win10_2020版

最方便的windows右键管理软件_支持win10_2020版 可以删除无效的windows右键,可以新增右键

NSExtAddDelFld-MS Namespace Shell Extension范例

演示MS Namespace Shell Extension 创建虚拟目录和次目录的实作范例, 并且增加了新增次目录或档案与删除次目录或档案的演示

抓狂的Namespace Shell Extension (3)

Explorer有两种线程模型: (1) 所有窗口在一个进程内,每窗口是一个或多个GUI线程。(2) 每窗口一个进程,每进程中有一个或多个GUI线程。 比较好的情况(对程序员友好)是(2)。如果用户选择的是方式1,那么在编写namespace shell extension时如果需要non-blocking方式,即完成长时间工作而主窗口依然能处理用户消息,一定要千万分当心。 下面是典型的一种情况:

netex的专栏 2459

MATLAB控制信号发生器(USB-GPIB-HS)GPIB仪器控制教程(含matlab代码)

自动化测试时需要自动产生信号,通过matlab控制信号发生器的频率与功率,以实现自动化信号生成输出

qq_43686057的博客 1606

抓狂的Namespace Shell Extension (7)

SEF支持本文中所说的两种类型的NSE。 这次要说的是如何支持NSE的两种类型: RootedNon-rooted 这两个微软发明的名词有些误导。有人会以为前者是在桌面上,后者是像RarFS那样的file viewer,实际正好相反。 :) 注册NSE的时候,如果选择:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Expl

netex的专栏 1875

STM32CubeMX实战:FreeRTOS内存管理5种方案全解析(附heap_4避坑指南)

本文深入解析了STM32CubeMX环境下FreeRTOS的5种内存管理方案(heap_1到heap_5),重点介绍了heap_4的优化策略与避坑指南。通过对比分析各方案的特点、性能指标及适用场景,帮助开发者根据项目需求选择最优内存管理策略,提升嵌入式系统开发效率与稳定性。

aa123的博客 620

从零到一:Mx_yolo本地训练与K210部署实战指南

本文详细介绍了从零开始进行Mx_yolo本地模型训练到K210部署的全流程实战指南。涵盖环境配置、数据准备、模型训练与调优、模型转换及K210部署等关键步骤,并提供了常见问题解决方案和性能优化技巧,帮助开发者高效完成AI模型在嵌入式设备的落地应用。

weixin_29081163的博客 252

抓狂的Namespace Shell Extension (4)

这次要说的是如何支持两个Windows shell的新特性:details expando和find in files。 Details expando,这个东西就是Explorer窗口左边的任务列表中“细节”栏的内容。(打开Explorer,将文件夹和搜索两个按钮置为抬起状态,就可以看到左边一排可以伸展收缩的框,称为expando。)在RarFS 0.0.8之前的版本中,如果选中一个rar里面的

netex的专栏 2047

Qt实战:用QTreeView+QStandardItemModel实现多级多列文件浏览器(附完整代码)

本文深入探讨了使用Qt的QTreeView与QStandardItemModel构建多级多列文件浏览器的完整实践。通过分析模型/视图框架的优势,详细演示了从基础框架搭建、模拟数据填充,到对接真实文件系统实现懒加载的全过程。文章还涵盖了自定义委托、多列排序、右键菜单等高级定制技巧,并提供了性能优化建议和完整的代码示例,帮助开发者打造功能强大且高效的工业级文件管理界面。

weixin_29021291的博客 424

抓狂的Namespace Shell Extension (6)

这次说的是如何在XP/2003的任务列表中添加自己的任务。 CodeProject上有篇文章, Namespace Extensions: The Tasks Band DisclosedBy Henk Devos http://www.codeproject.com/shell/foldertasks.asp 说的是这个主题。但是这位大拿有个关键地方讲错了。我实现了所有的接口,但是Explore

netex的专栏 1724

vue3+ts+elementui-plus二次封装树形表格实现不同层级展开收起的功能

我只定义了三层数据,就只演示展开了三层,还可以多层,自己设置即可。

蜗牛~~ 2603

面向 Cloud Foundry、ABAP On-Prem 与 ABAP Cloud 的 SAP Fiori 开发全景:工具、流程与实战案例

SAP Fiori开发实战:基于BAS的一站式工程化方法 摘要: 本文系统梳理SAP Business Application Studio(BAS)在Fiori开发中的核心能力,提供三种典型后端(Cloud Foundry/ABAP On-Prem/ABAP Cloud)的对接方案。BAS通过预置Fiori Tools套件、MTA部署工具等扩展,支持从模板创建、可视化建模到构建部署的全流程。文章包含CAP+RAP服务对接、ABAP标准应用扩展等实战案例,重点解析注解驱动开发、Adaptation Proj

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 256

抓狂的Namespace Shell Extension (5)

这次说的是如何在自己的NSE中将工具条按钮添加到Explorer中。SEF所包含的RarFS源码中有本文所讲的所有信息的参考实现,以及目前网上所能找到的所有公开和未公开的SFVM_*消息的含义的参数结构。 :) 第一个问题是:什么时候加入按钮。 微软有一个例子:CabView,在老的SDK里面有源码,新的SDK不再提供这个例子。它是自己用ListView实现了一个IShellView,在IShel

netex的专栏 2614

13、控制依赖与切片的新基础及递归While程序的摘要

本文探讨了控制依赖和程序切片的新研究进展,并提出了一种用于递归While程序的广义过程摘要概念和验证框架。文章介绍了控制依赖的新定义及其优势,程序切片的相关工作,以及递归While程序的过程摘要在完全正确性和终止性证明中的应用。通过阶乘和插入排序程序的示例分析,展示了过程摘要的有效性。未来的研究将聚焦于并发程序的依赖计算、依赖关系的语义连接以及时间属性的保留。

kotlin6android的博客 86

抓狂的Namespace Shell Extension (1)

最近在做一个NSE,把RAR文件虚拟成一个folder,所有前期准备工作做完后,突然发现SHITEMID的结构要变一变,让它能更好地对齐,从: bool bFolder;wchar_t parent[var_len];UINT size;wchar_t name[var_len]; 改为: BOOL bFolder;UINT size;wchar_t parent[var_len];wchar_t

netex的专栏 3720

KubeVela入门到精通-K8S多集群交付

KubeVela是一个功能强大、易于使用、高度可扩展的应用交付与管理平台。它基于Kubernetes和OAM 技术构建,通过开放应用模型(OAM)来作为顶层的抽像,提供了声明式部署、多集群/混合环境支 持、插件与扩展性、中心化管控以及易于使用与可观测性等特点。

小杨同学的博客 1270

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TypeScript接口声明合并原理与实战排错指南

TypeScript接口声明合并(Declaration Merging)是类型系统的核心机制,本质是编译期对同名interface的结构类型求并集,而非运行时覆盖或继承。其触发依赖严格的作用域一致性、成员类型兼容性及模块加载可见性,直接支撑Vue 3、Pinia、Axios等主流库的类型扩展能力。技术价值在于实现零侵入式第三方类型增强,广泛应用于Vue自定义指令封装、全局API类型注入、Volar插件协同等工程场景。本文聚焦真实故障链路——从tsconfig配置疏漏、TS Server加载跳过,到IDE与

weixin_34082695的博客 421

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Visual Studio GLSL词法着色插件开发实战

GLSL作为OpenGL/Vulkan核心着色语言,长期面临IDE原生支持缺失问题——在Visual Studio中默认以纯文本呈现,缺乏关键字高亮、括号匹配与类型识别。其本质是编辑器未注册GLSL内容类型及词法分类服务,导致无法触发语法着色管线。基于Visual Studio SDK的Classifier机制,可通过ContentType注册、TextMate兼容层与Span<char>高性能词法分析,实现轻量级但生产可用的词法着色(Lexical Coloring),覆盖.vert/.frag等6类扩展

dianlu5775的博客 475

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

比较清楚的介绍 外壳命名空间扩展 (转载)

转自哈巴狗的小窝外壳命名空间扩展一般介绍    很多人一定用过ZipMagic,对它能把一个压缩文件映射成文件夹感到很奇怪,不知道它使用了什么技术,实际上它用到的技术就是实现了一个外壳的命名空间扩展(Shell Namespace Extention)。文件夹和视图:资源管理器的基本结构    资源管理器的界面显示为两部分:左边显示的是对象在外壳命名空间的位置,它们是以树结构显示的,通常认为左边显

无限天空 8636

Browsable Namespace Extension

Browsable Namespace Extension,以Windows自带的zip文件功能为例。需要实现如下的一些方法: IFolderTypeIPersistIPersistFolderIPersistFolder2IShellFolderIShellFolder2IStorageIUnknown

独木专栏 2832
上一篇: 抓狂的Namespace Shell Extension (7)
netex
博客等级 码龄21年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值