抓狂的Namespace Shell Extension (4)

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 上实现 阅读详情
这次要说的是如何支持两个Windows shell的新特性:details expando和find in files。
 
Details expando,这个东西就是Explorer窗口左边的任务列表中“细节”栏的内容。(打开Explorer,将文件夹和搜索两个按钮置为抬起状态,就可以看到左边一排可以伸展收缩的框,称为expando。)在RarFS 0.0.8之前的版本中,如果选中一个rar里面的文件,在details栏里只能看到文件名。
 
猜想这和没有实现GetDetailsEx接口有关,于是在那儿加上log。
 
果然,当taskband显示时,explorer会通过GetDetailsEx来查询当前选中项的数个属性,依次是:
 
FMTID_WebView
FMTID_FileAttributes (微软没有公开此fmtid)
FMTID_Storage
 
前两项经实验,不必提供任何信息(如果提供了FMTID_WebView信息,details expando会消失)。FMTID_Storage则必须提供。
 
Explorer会查询如下三个PROPID:
 
PID_STG_STORAGETYPE
PID_STG_SIZE
PID_STG_WRITETIME
 
在MSDN中称,这三个PROPID都是VT_BSTR,这是完全错误的。实际上,只有PID_STG_STORAGETYPE是VT_BSTR类型,而后两个分别是VT_I8和VT_DATE类型。
 
下面的代码将SYSTEMDATE转换为本地时间的DATE类型:
 
     VARIANT* pv; // passed from parameter
 
     SYSTEMTIME st;
     FILETIME ftLocal, ft;
     item.GetSystemTime(&st);
     SystemTimeToFileTime(&st, &ftLocal);
     LocalFileTimeToFileTime(&ftLocal, &ft);
     FileTimeToSystemTime(&ft, &st);
     SystemTimeToVariantTime(&st, &pv->date);

 
正确填写了这三个属性后,details中就会出现文件的正确信息,多选时,Explorer会自动判断哪些信息无法同时显示,并能累加文件的总长度。
 
支持file in files的in-archive搜索则相对比较简单,首先,在定义自己NSE的各个column时,必须注意,前4项顺序必须是:
 
0 - Name
1 - Size
2 - Type
3 - Time
 
这是任何位置上Explorer自己的所有column都有的属性。
 
之后,只要实现MapColumnToSCID,就可以把我们的column和系统的column一一对应。SHCOLUMNID中的fmtid均为FMTID_Storage,而pid为PID_STG_NAME、PID_STG_SIZE、PID_STG_STORAGETYPE和PID_STG_WRITETIME。
 
蓝桥杯C/C++B组省赛实战指南:从环境配置到题解避坑 蓝桥杯C/C++B组省赛并非单纯考察算法能力,而是一场融合工程规范、环境适配与临场鲁棒性的综合能力测试。其核心在于理解隐含约束、适配GCC 5.4/C++11评测环境、严守输入输出格式,并在暴力可行前提下优先选择可验证的实现路径。区别于LeetCode的黑盒返回值判题,蓝桥杯采用全匹配黑盒评测,输出格式错误即0分,且不提示具体位置;同时要求代码具备状态机思维、内存安全意识与跨平台兼容性。本文聚焦真实考场高频痛点——VS Code配置陷阱、scanf空格解析失败、SG函数打表边界、段错误定位及应急模板手写—— 阅读详情

相关推荐

Namespace extensions - the undocumented Windows Shell(13KB)

Namespace extensions - the undocumented Windows Shell(13KB)

抓狂的Namespace Shell Extension (3)

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

netex的专栏 2459

GetDetailsOf函数使用Shell32.Shell返回空字符串,在本地计算机上工作正常

使用GetDetailsEx方法而不是GetDetailsOf。

Windows Shell编程-第十六章.命名空间扩展

第十六章 命名空间扩展          探测器使用层次结构表述形成系统的许多对象——文件,文件夹,打印机,网络对象等等。这些对象组合定义了一个命名空间,这是一个封闭的符号或名字集合,其中任何给定的符号或名字都能成功地被唤醒。在命名空间中解析一个名字就是成功地连接给定的名字到某个它所表述的实际信息。          探测器仔细地把所有这些对象收集到一起,与它们通讯,把它们的内容显示在典型的两

ljmwork的专栏 3415

C++面向对象程序设计大作业:魔兽世界(三):开战

C++面向对象程序设计大作业:魔兽世界(三):开战问题描述问题分析代码 问题描述 问题来自于北京大学郭炜老师的C++慕课的大作业 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 … N ( N <= 20)。红魔军的司令部算作编号为0的城市,蓝魔军的司令部算作编号为N+1的城市。司令部有生命元,用于制造武士。 两军的司令部都会制造武士。武士一共有dragon 、ninja、iceman、lion、wolf 五种。每种武士都有

RedRum_1965的博客 4036

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2648

抓狂的Namespace Shell Extension (7)

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

netex的专栏 1875

GPOPSII 对控制量变化率进行约束,避免控制量振荡

在这篇文章中,在GPOPSII中通过对控制量变化的约束,优化求解得到更平滑的控制量曲线,更符合真实控制约束。

Dannyfomer的博客 1871

Windows Shell NameSpace补充-文件夹位置

Windows Shell NameSpace补充-文件夹位置 Windows Shell NameSpace,简单的说,可以说是Shell虚拟文件夹的实现,这些虚拟文件夹可以存在于桌面上,我的电脑上,控制面板上等等,不同位置上的COM组件实现方式完全是相同的,不同点在于注册信息不一样,通俗的说就是它们在注册时所改写的注册表项不一样,下面列一下具体位置所对应的注册表路径:

ljmwork的专栏 3277

Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(二)

DRAM 的发展史

qq_33473931的博客 995

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

抓狂的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

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 508

抓狂的Namespace Shell Extension (2)

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

netex的专栏 4007

DRM全解析 —— encoder详解(3)

DRM全解析 —— encoder详解(3)

phmatthaus的专栏 491

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 590

抓狂的Namespace Shell Extension (8)

这次说的是剪贴板格式 vs. 上下文菜单&属性页之间的关系。这种关系并非相声和水利的关系。 为了更好地证明SEF的强大威力,同时为了更方便自己在网上down东西,决定写一个non-rooted NSE:网络硬盘,把@163.com的邮箱变成一个虚拟硬盘。网上已经有类似的东西,叫做GmailDrive,可惜一来不公开源码,二来上传大文件的时候太费劲。 WebDrive是植根在desktop上的non

netex的专栏 2017

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

抓狂的Namespace Shell Extension (5)

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

netex的专栏 2614

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

抓狂的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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

weixin_34082695的博客 421

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

MSDN-Shell Namespace Extensions

Understanding Shell Namespace Extensions Windows Explorer provides a graphical representation of the Shell namespace combined with tools that allow users to interact with Shell objects. With

ljmwork的专栏 2004

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

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

无限天空 8636

Windows Shell提取媒体信息

这个Project有三个有趣而可以参考的地方:使用COM接口操作Windows Shell,并提取多媒体文件的标签信息编写Dll,并提供对DLL中的类显示调用的支持最小化编译时的依赖,即正确地使用#include、理清C/CPP文件和H文件的关系为了照顾这个Project研究的逻辑思考过程,将这三点按上述顺序排列,虽然我觉得后面的更好玩一点。Moreover, the

无幻 4333

C# 获取光盘容量大小(空白光盘大小也可以获取到)

C# 获取光盘容量大小,正常的光盘可以使用windows api GetDiskFreeSpaceEx来获取 GetDiskFreeSpaceEx获取正常光盘 例子: [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "GetDiskFreeSpaceEx")] [return: MarshalAs(UnmanagedType.Bool)] ...

immotal_xiaoqiang的博客 932

Windows下的shell扩展的种类以及相关的实例

表一Windows 外壳扩展类型适用于版本有关的接口描述上下文菜单 Context Menu 文件类和外壳对象Windows 95+IContextMenu, IContextMenu2, or IContextMenu3 允许在外壳对象的上下文菜单中增加新的才单项右拖拽 Right drag and drop文件类和外壳对象Windows 95+IContextMenu, IContextMen

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值