Articles of windows shell

如何在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} 有任何想法吗?

如何显示“发送到”和“打开方式”上下文菜单?

前一段时间,我问了如何在Delphi中popupWindows上下文(右键单击)某个文件的菜单 。 然而,即使一切正常(几乎)好,“发送到…”和“打开…”子菜单没有任何项目,即使当我在资源pipe理器中右键单击相同的文件名时工作确定。 (例如,“发送到…”具有“桌面(创buildshotcut)”,“电子邮件收件人”等)。 我怎样才能使这些菜单出现?

用Shell脚本中的Progra〜1replace程序文件

我想有一个脚本/命令,将取代所有出现的“程序文件”与没有空间Progra〜1赢得Windows XP的Windows Shell脚本 有没有办法在XP的shell做到这一点? 我一直在search,找不到任何例子sudo CURRENT_PATH =%PATH%NEW_PATH =用程序replace所有的“程序文件”〜1 然后我将使用setx来设置新的path

什么是最长的文件path被允许移动到回收站?

对于我的应用程序,我正在testing最长的可用文件path,以允许将其移动到回收站中,并获得有趣的结果。 在Windows XP上,最大大小为259个字符,即MAX_PATH常量减1。 但在我的Windows 8.1 Pro上,最大允许的文件path大小似乎是215个字符。 所以我很好奇,有没有官方的指导方针呢? 编辑:好吧,因为下面的海报要求一个API,我用FO_DELETE和FOF_ALLOWUNDO SHFileOperation将用户的文件放入回收站。 由于Windows资源pipe理器为其删除操作使用相同的确切API,因此可以通过在Windows资源pipe理器中创build一个长path,然后尝试删除它来轻松进行testing。 在我的实验中,我可以看到以下内容: Windows XP中 ,如果总path长度为259个字符(在某些版本上,可能是257 ??),文件/文件夹将被放入回收站。 否则Windows资源pipe理器只提供一个选项来永久删除它。 Windows Vista ,这个限制是217个字符,包含。 Windows 7和8 ,包括215个字符。 所以看起来这个最大的限制正在缩小…因此,我只是好奇,如果这是logging在MSDN的某处?

在调用IContextMenu时如何处理重命名操作?

我使用CMF_CANRENAME调用IContextMenu::QueryContextMenu ,在调用Windows XP上的IContextMenu::InvokeCommand时遇到了处理重命名操作的问题。 我不是一个命名空间的扩展,我不使用DefView / IShellView,但我提供了一个实现IServiceProvider的网站。 在较新版本的Windows上,我查询了一个实现了IFolderView2的服务,并且shell调用了IFolderView2::DoRename ,我可以开始重命名操作。 在Windows XP上,但它查询SID_DefView服务,但我找不到有关如何实现该服务的任何信息。 它(SHELL32!CDefFolderMenu :: _ ProcessRename)要求的接口是{985F64F0-D410-4E02-BE22-DA07F2B5C5E1},我可以在registry中看到这是IDefViewFrame3的IID,但它似乎是无证的! 另一方面IDefViewFrame被logging,但是MSDN所说的唯一的事情是“仅用于它的IUnknownfunction,它没有自己的方法”。 在这种情况下是否有文档处理XP的重命名操作? 我真的不想伪造一个IDefViewFrame3接口,但我能想到的唯一的其他select是看它是否是重命名的动词,只是在TrackPopupMenu后自己处理。

taskkill通过path来区分2个图像

如何杀死一个进程的名称和创build从一个特定的path使用taskkill? taskkill / F / IM 当然它不能区分从两个不同位置C:\ Dir1和C:\ Dir2开始的2个进程 tasklist是否有任何切换来获取path名称