首页 > 解决方案 > 如何确定程序是否仅接受文件或文件列表作为参数?

问题描述

我想在 Delphi 中编写一些代码,以便在 Windows 中使用相关程序打开一些文件(例如 mp3、png)。

使用AssocQueryString,我可以找到给定扩展的程序。使用这个程序,当只选择一个文件时,我可以启动给定的文件。问题是当我尝试使用文件列表启动程序时。

示例 1 - mp3 与 AIMP3 相关联此调用运行良好

D:\Tools\AIMP3\AIMP3.exe "F:\TestFiles\mp3\file1.mp3" "F:\TestFiles\mp3\file2.mp3"

示例 2 - png 与 IrfanView 相关联并且此调用失败

D:\Tools\IrfanView\i_view32.exe "F:\TestFiles\png\file1.png" "F:\TestFiles\png\file2.png"

IrfanView 不接受使用文件列表调用它,而只能使用一个文件。

我的问题是,如何确定程序是否仅接受单个文件或文件列表作为参数?

我试图检查注册表,但一无所获。在shell->open->command我可以找到两个程序的“%1”。

我曾尝试使用该IDropTarget界面,但这也不适用于 IrfanView(在 i_view32.exe 上放置多个文件在 Windows 资源管理器中也不起作用)。

另一方面,Windows 资源管理器(如果对许多 png 文件使用上下文菜单中的打开)为每个文件打开一个新的 IrfanView 实例。如果我有这些信息,我还可以为每个文件启动 IrfanView。

标签: delphiassociated-application

解决方案


推荐阅读