问题标签 [windows-explorer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何创建“Shell IDList Array”以支持将虚拟文件从 C# 拖放到 Windows 资源管理器?
我开始尝试使用此代码项目教程实现虚拟文件的拖放(来自 C# 4/WPF 应用程序)。在花了一些时间试图找出 DV_E_FORMATETC错误后,我发现我需要支持“Shell IDList Array”数据格式。但是关于这种格式的实际作用似乎几乎为零。
经过一番搜索,我发现这个关于高级数据传输的页面说 Shell IDList Array is a pointer to a CIDA structure。然后,此 CIDA 结构包含 PIDL 的数量以及它们的偏移量列表。那么PIDL到底是什么?经过一番搜索,这个页面有点暗示它是一个指向ITEMIDLIST的指针,它本身包含一个成员,它是一个SHITEMID的列表。
我做了更多的阅读,我仍然无法判断多个 PIDL 的用途,但是路径中的每个“级别”都有一个 SHITEMID。至少这是解决了一个谜。
我的下一个想法是尝试使用虚拟文件 (WinSCP) 从另一个应用程序中拖动文件。我刚刚得到了这种格式的 MemoryStream。至少我知道要为这个东西提供什么类,但这对解释要放什么东西根本没有帮助。我尝试根据上面链接中的格式检查此 MemoryStream,但没有成功。我刚取回垃圾数据,其中一个“cb”字段告诉我,当整个流只有 539 个字节时,它的长度为 18000 个字节。
此外,在进一步阅读后,此页面似乎暗示 PIDL 中包含的数据实际上是一条路径,并且在十六进制编辑器中检查所述 MemoryStream 的内容会在我的本地 Temp 目录中产生一条路径(分成几部分,反正)。
似乎 WinSCP 只是使用一个 shell 扩展来处理资源管理器的丢弃,我真的不想诉诸于此。但是,它有另一种模式,在它传输到临时文件夹之前中止拖放 - 这对我来说是可以接受的,但我一点也不知道该怎么做。
我现在的问题是:
- 什么是 SHITEMID 的有效“abID”成员?这些虚拟文件只存在于我的程序中;当它执行GetData时,它们会被拖到后面传递“abID”吗?它们必须是系统唯一的吗?
- 我如何管理 WinSCP 所做的中止和稍后重做的拖放操作?
- 如果我必须为此实现一个 shell 扩展,我该怎么做呢?我确信我可以很容易地找到 shell 扩展理论的解释,但是我将如何支持自定义 PIDL 或其他什么?
任何帮助甚至解释我应该做什么的链接将不胜感激。
编辑:所以这就是我最终是如何做到的:
我从上面的 CodeProject 教程中删除了大部分代码,保留了用于创建 FileGroupDescriptor 的函数。然后我重新实现了 .Net IDataObject 接口(实际上,我根本不必使用 COM IDataObject 接口)。然后我被迫在后台同步下载文件,并从 GetData() 传回 MemoryStream。方便的是,实际复制在后台,但等待数据在前台。谢谢,探险家。任何相当大的文件都很慢,但现在它“有效”,这比我过去几周所能说的要多。
我确实尝试过传递我在内部用于传输的PipeStream类,但资源管理器对此并不满意:
- 尽管这个类的 CanSeek 是假的,它还是会尝试寻找。
- 它忽略了我在 FileGroupDescriptor 中发送的大小,只是立即下载流中的任何内容。
所以,我不确定理想的情况是否真的可行。不过,感谢您的所有帮助。我将赏金给 JPW,因为他的回复最终让我走上了正确的道路。
java - 文件资源管理器 java
我想在 Java 应用程序中有某种文件浏览器,例如 Windows 资源管理器。
我只想要能够递归地列出文件夹内文件的东西。
有没有一种简单的方法可以做到这一点?
我已经尝试过使用 JFileChooser 但这不是我想要的。
.net - 如何使用 .net 在 Windows 资源管理器中预选文件?
如何在突出显示特定文件的特定文件夹上弹出 Windows 资源管理器?
我对 XP、Vista 和 Windows 7 的解决方案感兴趣。
java - 在 Java 中按名称排序文件与 Windows 资源管理器不同
我有一个简单的 Java 程序,它读取文件目录并输出文件列表。我按名称对文件进行排序:
我的问题是它按名称排序的方式与 Windows 资源管理器不同。
例如,如果我有这些文件:abc1.doc、abc12.doc、abc2.doc。
Java 会这样排序:
当我在 Windows 资源管理器中打开文件夹时,我的文件排序如下:
如何让 Java 像在 Windows 资源管理器中一样对文件进行排序?这是Windows技巧吗?
windows-explorer - 使用鼠标按钮从另一个应用程序拖放不会触发事件
我正在尝试将文件拖放到我的应用程序中的控件上。问题是当您按住鼠标按钮(即从寡妇资源管理器中拖动)时,我的应用程序不会触发任何表单事件。如果鼠标没有按下,它们都可以正常工作。似乎我需要为应用程序启用“AllowDrop”(它在表单上启用)
我错过了什么?
我正在 windows 7 环境中的 vb.net 2008 中开发
c# - c# windows-server中系统托盘图标的问题
我使用 Windows Server 2003(和 2008)和 C#,我的桌面系统托盘有问题。我已经完成了一个用于磁盘管理的应用程序,当应用程序启动时,它会从任务栏中隐藏自己并在系统托盘中添加一个图标。当我单击此图标(在系统托盘中)时,将显示应用程序的表单。
我在系统调度程序中创建了一个任务以在特定时间自动执行应用程序,如果我在应用程序启动时(从调度程序)登录服务器,则图标出现在桌面的系统托盘中。但是,如果我没有登录服务器并且调度程序午餐我的应用程序,当我登录时,我在系统托盘中看不到图标,但我的应用程序运行良好。
我尝试了不同的方式来显示应用程序表单,例如,应用程序读取文件中的标志,当标志为真时,它会强制 form.Show() 但不起作用。
我想我必须在加载桌面时将我的申请表通知资源管理器(进程),但我不知道如何做到这一点。是正确的方式吗?我在等你的建议。
最好的祝福
c# - 覆盖 Windows shell/资源管理器中的文件图标
有没有办法使用 C# 在 Windows 资源管理器中覆盖特定文件格式(我自己的)的图标和/或预览?我的文件是包含 base-64 图像的 xml 文件,我想在资源管理器中将此图像显示为文件图标。
c# - 使用 WinAPI 获取选定的文件夹项目
我尝试获取用户正在使用的文件夹的选定文件。我有以下代码已经在运行,但仅在桌面文件上:
我尝试使用 GetForegroundWindow() 获取窗口句柄,然后调用 SHELLDLL_DefView 没有成功。
那么如何更改前 3 行以获取当前正在使用的文件夹的句柄?
windows-explorer - Add a link in webpage that links to a Windows Explorer window?
My client wants to add a link to a webpage. When the link is clicked, Windows Explorer will open and go to an FTP site (e.g., ftp://ftp.domain.com/). I tried the following HTML
Unfortunately, this will open the FTP site in the web browser which supports downloading only but not uploading.
I prefer a cross-browser solution, but an IE-only solution would be fine as well.
java - “如何在 Java 中构建类似于 Windows Explorer 的用户界面?”
我需要开发一个类似于 Windows 资源管理器的 Java UI。界面应该有图标和拖放功能。