Articles of windows shell

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

前一段时间,我问了如何在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名称

Windows Shell如何调整图标叠加层?

我写了一个Shell Icon Overlay处理程序,它包含一个带有256,48,32和16位图标的多图像图标。 覆盖位在左下angular,分别为32,15,10和6位。 在Windows资源pipe理器中,将“视图”设置为“小”,图标为16位,select的叠加消耗6位。 中等图标:48位覆盖10.全部如我所料。 当“视图”设置为“大”时,将使用一个96位的图标,该图标将覆盖15位。 无论这是来自48位重叠的15位,还是从256位下采样,我都不知道。 如果我为多图像添加一个96位覆盖图,使用32位覆盖图(就像testing),所使用的覆盖图仍然显示为15位。 当“视图”设置为“超大”时,使用的叠加层仍然只有15位。 只是一个非常大的图标上的斑点。 所有上述都在Windows 7上。在Windows 8桌面上,可以看到相同的结果,除了超大图标现在只覆盖12 * 12位图,明显从较大尺寸(15?32?)下采样 任何人都可以帮助一个明确的答案,我应该提供什么样的大小覆盖最大化的观看体验?

我怎样才能从屏幕分辨率对话框在win7编程从监视器号码?

当您在“屏幕分辨率”对话框中按“识别”button时,Windows将在每台显示器上显示大量白色显示器号码。 在Windows XP中使用监视器坐标(使用EnumDisplayDevices)可以很容易地find它们,但在Windows 7上它已经损坏。 我怎样才能做到这一点? EnumDisplayDevices和GetMonitorInfo在Windows 7中不再可靠 。 我尝试了GetMonitorInfo,然后从MONITORINFOEX.szDevice(IE \。\ Display2)提取监视器号码,但没有成功。 另外一个人在两年前做了这个 ,声称getMonitorInfo有一个bug。 这个bug被Microsoft标记为没有任何评论,但仍然可以在具有最新更新的win7机器上进行复制。 (顺便说一句,有人可以告诉我 – 也许这个bug在win8上没有?) 我尝试从新的CCD API的QueryDisplayConfig ,但没有find所需的信息。 有人知道吗?

最小化/恢复窗口以编程方式跳过animation效果

我需要在窗口列表上执行多个操作(最小化其中的一些,还原其他窗口),以便一次切换两个或多个窗口。 这个问题是在最小化和恢复窗口时可以看到的那些animation。 整个过程看起来很糟糕,所有的animation进出,上下。 但是,我不能禁用这些animation,因为这是用于其他计算机的,我不想更改其他人的设置,而且当您最小化/恢复一个窗口(即手动执行)时,这些animation实际上是有用的,因为您可以看到发生了什么事情,但是一次只能在几个窗口上编程,这并不好。 我现在正在使用SendMessage函数发送WM_SYSCOMMAND消息与参数SC_MINIMIZE / SC_RESTORE 。 我不知道是否有另一种方式。 所以,这个问题: 我如何在没有animation效果的情况下以编程方式最小化/恢复窗口? PS:编程语言并不重要。 我可以使用任何语言来完成这个任务。

为Windows XP命令行提供“前置”function

有没有一个命令,我可以把一个Windows XP的.bat文件,把命令shell的前面?

如何使用Windows Shell APIparsing像“This PC \ Galaxy Tab A \ Card \ Folder1”这样的浏览器面包屑path?

当用户在Windows资源pipe理器中导航到他的Android手机的SD卡上的文件夹时,当在地址中点击一下时,资源pipe理器将显示一种类似"This PC\Galaxy Tab A\Card\Folder1"的面包屑path酒吧。 Windows资源pipe理器在地址栏中input或复制这些path时也会接受这些path并按回车键。 我想知道是否有一种方法来parsing这些使用Shell API的面包屑path,并返回一个IShellItem或IShellItem 。 到目前为止,我没有成功使用例如SHParseDisplayName() 。 这个代码 LPITEMIDLIST itemidlist; HRESULT hr = SHParseDisplayName(L"This PC\\Galaxy Tab A\\Card\\testfolder", NULL, &itemidlist, 0, NULL); 返回0x80070002作为HRESULT 。 当path不存在时 ,问题SHParseDisplayName将处理如何使用IBindCtx来parsing尚不存在的文件path的问题。 这可以使用STR_FILE_SYS_BIND_DATA绑定上下文来完成。 但是移动设备上的对象没有文件系统数据,而且它们已经存在,所以我不明白为什么这是重复的。