我想知道为什么默认情况下没有集成.我想在Windows资源管理器的VS解决方案文件的文件上下文菜单中有一个项目来构建它.
有这个工具吗?或者我必须自己创建吗?
使用以下内容
explorer.exe /select, "c:\path\to\file.txt"
Run Code Online (Sandbox Code Playgroud)
我可以打开Windows资源管理器并选择该文件.在Delphi中我这样选择"Parm"文件:
ShellExecute(Application.MainForm.Handle, 'OPEN', PChar('explorer.exe'), PChar('/select,"' + Parm + '"'), nil, SW_NORMAL);
Run Code Online (Sandbox Code Playgroud)
它有效.我的问题是这样的:如果我在最近打开的资源管理器中选择一个不同的文件(单击另一个文件),然后调用上面的代码,则不再选择"Parm"文件.有趣的是,有一些程序再次选择文件.例如,ITunes总是选择所需的文件.
有没有人知道如何让Explorer始终选择指定的文件?
我在我的Win32应用程序中"嵌入Windows资源管理器".(从技术上讲,我在我的应用程序中托管了一个文件夹的ShellView,这是Windows资源管理器所做的).
问题是视图永远不会调用IShellBrowser.BrowseObject.shell视图不是要求我导航到新位置(通过BrowseObject事件),而是启动Windows资源管理器的副本以查看该文件夹.
我希望默认的shell视图(通俗地称为DefView)是可浏览的.
首先,我们需要获取IShellFolder我想要显示的文件夹.要获取的最简单的文件夹是Desktop文件夹,因为SHGetDesktopFolder API它有一个for:
folder: IShellFolder;
SHGetDesktopFolder({out} folder);
Run Code Online (Sandbox Code Playgroud)
接下来我们要求桌面文件夹将其IShellView 交给我们:
view: IShellView;
folder.CreateViewObject(Self.Handle, IID_IShellView, {out}view);
Run Code Online (Sandbox Code Playgroud)
现在我们有文件夹的IShellView(而不是IContextMenu或IExtractIcon),我们现在想通过调用IShellView.CreateViewWindow来显示shell视图:
hostRect: TRect; //where the view is to display itself
folderSettings: TFolderSettings; //display settings for the view
hwndView: HWND; //the newly created view's window handle
folderSettings.ViewMode := FVM_DETAILS; //details mode please, rather than icon/list/etc
folderSettings.fFlags := 0;
hostRect := Rect(20, 20, 660, 500); //the view …Run Code Online (Sandbox Code Playgroud) 我想列出所有打开的Windows资源管理器窗口及其活动路径ListBox.ListBox如果浏览器窗口导航到其他路径,应用程序应刷新.
例如,两个浏览器窗口是打开的.一个导航到C:\Windows另一个导航到另一个导航D:\Stuff.当应用程序运行它,它增加C:\Windows和D:\Stuff到ListBox.然后,用户导航到其中一个打开的资源管理器窗口中的其他文件夹C:\Windows\system32.然后应用程序应刷新ListBox和列表C:\Windows\system32,D:\Stuff而不是.
我对如何做到这一点没有任何想法.任何指针将不胜感激.
我知道SHFileOperation可用于使用Windows资源管理器执行文件操作,但它只执行源和目标都已知的完整文件操作.
是否有API允许应用程序在Windows资源管理器中从应用程序中剪切,复制或粘贴?
回答几个问题:
使用Windows资源管理器执行文件/文件夹操作将大大简化移动多个对象.这对于移动文件夹及其内容尤其重要,因为MoveFile不支持将文件夹移动到不同的卷.
使用Windows资源管理器执行文件/文件夹操作将允许将操作添加到Windows资源管理器的撤消缓冲区,以便可以撤消它们,否则无法撤消使用控制台应用程序/命令提示符执行的操作.
我确信我已经看到以编程方式执行Windows资源管理器动词,但我似乎无法找到这样做的方法.
使用SO帖子"打开文件夹并选择文件"的答案中描述的代码,我创建了这个函数:
public static void OpenExplorerAndSelectFile(string filePath)
{
Process.Start(
@"explorer.exe",
string.Format(@"/select, ""{0}""", filePath));
}
Run Code Online (Sandbox Code Playgroud)
这个功能运行良好,有一个小问题:
首次为特定文件调用该函数时,Windows资源管理器会正确显示该文件的文件夹,但不会选择该文件.
再次为同一个文件调用相同的函数,它会切换回Windows资源管理器中已打开的文件夹,然后选择该文件.
例如,第一次调用OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")在新的Windows资源管理器窗口中打开文件夹"C:\ MyFolder".第二次调用OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")实际上再次激活该窗口并选择MyFile.txt.
在谷歌浏览器中做类似的事情(转到下载页面并显示以前下载的文件)实际上在第一次尝试时效果很好.
所以我的结论是谷歌Chrome似乎与我有点不同.
我的问题:
有没有办法调试/跟踪谷歌Chrome调用的Win32/Shell方法?
然后我会将它们与我所做的比较以查看差异.
我想为Windows XP创建一个Delphi应用程序,它允许删除从Windows资源管理器(桌面或文件夹窗口)或支持此操作的其他应用程序(例如Total Commander)拖动的文件.反之亦然?当用户从我的应用程序中拖动图标时,我应该能够将拖动对象的内容设置为自定义数据.
我的目标是创建一个自定义应用程序工具栏,我可以在其上删除应用程序并显示其图标或从中拖动应用程序或其他实体.
如何才能做到这一点?
我正在尝试在各种文件的图标上添加不同的图标叠加(注意:不是某种类型的所有文件,只是某些文件).如果你不理解我的意思,我指的是TortoiseSVN,TortoiseHG,Dropbox等程序.
这可以在.NET中完成吗?如果是这样,怎么样?我希望那里有一个图书馆.我发现这篇关于类似这样的CodeProject文章,但它不是.NET.
提前致谢.
有没有办法(通过shell扩展或注册表设置)告诉Windows资源管理器它不应该读取正在显示的文件夹中的文件,以便提取元数据或创建缩略图?
问题是当用户导航到该文件夹时,Windows资源管理器会尝试读取该文件夹中的所有文件并从中提取某些元数据.如果介质很慢,则需要很长时间并导致文件系统上出现不必要的负载.当读取整个图形文件时,在缩略图的情况下尤其如此.
我正在寻找在代码中执行此操作(限制资源管理器)的方法,因此"不使用缩略图模式"不是可接受的答案:).
更新:不幸的是,每个用户的设置不起作用,因为我们作为磁盘提供商只能处理我们自己的磁盘(并且用户可能希望对常规磁盘和虚拟磁盘进行单独设置).我相信必须有一些方法来"解释"驱动器运行缓慢的操作系统.
也许我们需要处理驱动程序级别的一些IRP来告诉操作系统介质是否很慢?
对于我的应用程序,我正在测试允许移动到回收站中的最长可用文件路径,并且我得到了有趣的结果.
在Windows XP上,最大大小为259个字符,即MAX_PATH常量减1.
但在我的Windows 8.1专业版中,最大允许文件路径大小似乎是215个字符.
所以我很好奇有这方面的官方指导方针吗?
编辑: OK,因为下面海报请求的API,我使用SHFileOperation与FO_DELETE和FOF_ALLOWUNDO放置用户的文件放到回收站.由于Windows资源管理器使用与其删除操作完全相同的API,因此可以通过在Windows资源管理器中创建长路径然后尝试删除它来轻松测试它.在我的实验中,我可以看到以下内容:
Windows XP,如果总路径长度为259个字符(在某些版本上,它可能是257 ??),文件/文件夹将被放入回收站.否则,Windows资源管理器仅提供永久删除它的选项.
Windows Vista,这个限制是217个字符,包括在内.
Windows 7和8,它包含215个字符.
所以看起来这个最大限制正在缩小......所以我只是好奇,如果在MSDN的某处记录了这个?
windows-explorer ×10
windows ×5
.net ×3
c# ×3
delphi ×2
explorer ×2
winapi ×2
clipboard ×1
contextmenu ×1
file-io ×1
icons ×1
shellexecute ×1
vb.net ×1
vbscript ×1