Articles of windows shell

如何在命名空间扩展中添加(启用)标准的“发送到”上下文菜单选项

我有一个命名空间扩展,它提供了一个服务器中的文件/文件夹的虚拟视图。 在IContextMenu::QueryContextMenu()我已经添加了一些自定义菜单项。 我还在IShellFolder::GetAttributesOf()设置了几个SGAOF标志,以获得上下文菜单中的重命名,删除和属性。 有什么办法可以让我的名字空间扩展项目的上下文菜单中的“ 发送到 ”选项? 一旦启用这些命令,我​​该如何处理这些命令? 请指教。 这是Denis Anisimovbuild议的那个代码 const CLSID SendToCLSID = { 0x7BA4C740, 0x9E81, 0x11CF, { 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37 } }; HRESULT CMyNSEContextMenu::Initialize(PCIDLIST_ABSOLUTE pidlFolder , IDataObject *pDataObj, HKEY hkeyProgID ) { OutputDebugString(L"CMyNSEContextMenu::Initialize\n"); //Other initialization code … … if (_pdtobj) { _pdtobj->Release(); _pdtobj = NULL; } _mpidlFolder = […]

更新Windows资源pipe理器中显示的可用空间量

如何更新驱动器的Windows资源pipe理器中显示的可用空间量? 假设Windows资源pipe理器已打开,并以编程方式删除了一些文件。 Windows资源pipe理器将不会刷新显示新的可用空间。 所以,我试图像这样使用SHChangeNotify (Delphi代码): ws := 'C:\'; SHChangeNotify (SHCNE_FREESPACE, SHCNF_PATH, PWideChar(ws), nil); 但不会更新“Windows资源pipe理器”中报告的值。 请帮忙。

* .bat和* .cmd文件有什么区别?

可能重复: Windowsbatch file:.bat vs .cmd? 嗨, 我正在学习Windows批处理编程,并遇到这个问题: .bat和.cmd文件有什么区别? 如果他们是相同的,为什么需要其中2? 顺便说一句, command.com和cmd.exe有什么区别?

图标覆盖处理程序的命名空间扩展

我正在开发命名空间扩展,它提供了服务器上的文件的虚拟视图。 在这个视图中,我需要使用叠加图标提供不同的状态(使用中,离线,不同步等)。 我通过实现覆盖处理程序的文章阅读,并认为我会尝试在我们的覆盖处理程序之一,实现IShellIconOverlayIdentifier接口处理此。 我看到IShellIconOverlayIdentifier :: IsMemberOf()和其他函数只有当我访问正常文件系统上的文件,即c:\,d:\等时才被调用。当我浏览命名空间扩展时,根本不会调用这些调用。 这是为什么? 如何在命名空间扩展中为对象实现覆盖? 问候,Madhu

Windows 10等效的LaunchAdvancedAssociationUI

自Windows 10以来, IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI方法不再起作用。 在Windows Vista 7和8上,它将打开指定应用程序的“ 设置程序关联”页面上的“控制面板”。 在Windows 10上,它只显示这个popup窗口: 要更改您的默认应用程序,请转至设置>系统>默认应用程序。 截图: 它甚至logging在MSDN中: 从Windows 10开始,这不会启动关联对话框。 它向用户显示一个对话框,通知他们可以在设置中更改用于打开文件扩展名的默认程序 有没有一种替代方法来以编程方式在Windows 10中为我的应用程序打开“ 设置程序关联”页面? 还是有另一种方法build议应用程序允许其用户在Windows 10中自定义关联? 我知道这些部分的解决scheme: 使用,打开控制面板的默认程序页面 %windir%\system32\control.exe /name Microsoft.DefaultPrograms 但用户必须单击“ 设置默认程序” ,在列表中find我的应用程序,然后单击“ select此程序的默认值” 。 有没有办法跳过至less一些步骤? 例如, 设置默认程序页面是否有一个规范名称,或者对于特定于应用程序的页面更好? 使用IApplicationActivationManager打开设置应用程序中的默认应用程序页面: Activator->ActivateApplication( L"windows.immersivecontrolpanel_cw5n1h2txyewy" L"!microsoft.windows.immersivecontrolpanel", L"page=SettingsPageAppsDefaults", AO_NONE, &pid); (Windows 10上的Firefox使用的代码; Chromium使用与@Jichao评论相同的代码 ) 然后,用户可以使用按应用链接设置默认值访问控制面板。 或者使用按协议/文件types链接select默认应用程序 。 我认为这些也可以通过程序直接打开。 我只是不知道一个语法。 除了SettingsPageAppsDefaults页之外,还必须指定SettingsPageAppsDefaultsProtocolView ( SettingsPageAppsDefaultsFileExtensionView )和/或SettingsGroupDefaultApps组。 我不知道怎么。

如何在desktop.ini更改时立即重新加载文件夹图标

我试图改变文件夹图标使用更改desktop.ini文件夹上编程。 我可以设置图标,但不能通过更改“IconIndex”立即更改。 该图标也在几秒钟后更改。 有没有人知道如何立即改变图标?

Windows 命令显示超时的消息框?

注意:这是一个问题答案 ,以便logging其他人可能会觉得有用的技术,以便或许能够意识到别人的更好的解决scheme。 随意添加评论或问题作为评论。 也请随时添加额外的答案。 🙂 如何通过键入单个Windows命令来显示消息框 ,例如在“开始”菜单的“运行”对话框中或[cmd.exe]命令解释程序中?

使用Delphi查找特殊驱动器

我试图在Delphi 2007中编写一个小程序,以便在插入Windows 7机器时从便携式USB驱动器访问文件。 虽然这个驱动器不会显示为一个标准的驱动器号。 它出现在Windows资源pipe理器的便携式设备下。 我写了下面的代码枚举“计算机”下的所有项目: Procedure TfrmMain.ComputerChanged(Var Msg: TMessage); Var Enum: IEnumIDList; Fetched: Longword; Item: PItemIDList; Path: String; Computer: IShellFolder; StrRet: TSTRRET; Begin Status('Computer changed… Checking folders.'); fDesktop.BindToObject(fCompPidl, Nil, IID_IShellFolder, Computer); If Assigned(Computer) And (Computer.EnumObjects(Self.Handle, SHCONTF_FOLDERS, Enum) = NOERROR) Then Begin While (Enum.Next(1, Item, Fetched) = NOERROR) Do Begin FillChar(StrRet, SizeOf(StrRet), #0); Computer.GetDisplayNameOf(Item, SHGDN_FORADDRESSBAR […]

使Windows刷新图标caching

我真的很喜欢KDE SC 4的氧气外观。我写了一个程序来将这些图标应用到窗口。 该程序是用NSIS编写的,目前function已经完全正常。 但是,我发现使Windows意识到图标更改的唯一方法是杀死explorer.exe,删除图标caching,并respawn explorer.exe。 SHChangeNotify与SHCNE_ASSOCCHANGED似乎无法使Windows意识到对控制面板图标,我的电脑图标等的更改。请build议一个更好,不那么残酷的方法使Windows意识到这些更改。 编辑:我发现了一个名为图标调整程序似乎能够做到这一点,但它是封闭的源,所以我不知道它是如何做到这一点。 (IconTweaker: http ://www.crystalxp.net/galerie/en.id.83-icontweaker.html) 编辑:我有这个工作正常,谢谢安德斯的答复(见下文)。 不过,我只是把我的工作NSIS代码放在这里,以防别人需要它 ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" IntOp $0 $0 + 1 WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0 SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000 IntOp $0 $0 – 1 WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0 SendMessage 0xffff […]

Windows批处理:在后台运行一个进程并等待它

我需要从我的批处理作业开始2个后台进程,然后等待它们。 Unix shell模拟是: myprocess1 -flags1 & pid1=$! myprocess2 -flags2 & pid2=$! wait ${pid1} wait ${pid2} 有任何想法吗?