我想用我写的替换标准系统打开文件对话框,这意味着无论您在哪个程序中打开文件,都会显示我的对话框而不是标准对话框,这可能吗?
似乎没有提供这样的 API 来实现这一点,是否可以使用一些钩子技术,但这必须是可靠的,并且不会被反病毒工具视为间谍软件?
还有其他选择吗?
如果这不可能,是否可以在标准打开文件对话框中的空格键或工具栏中添加一个调用我的对话框的按钮,该按钮允许用户选择一个文件,然后将所选文件的路径返回到“文件名" 标准对话框的输入框?
任何点击、链接和代码示例将不胜感激。
我想用我写的替换标准系统打开文件对话框,这意味着无论您在哪个程序中打开文件,都会显示我的对话框而不是标准对话框,这可能吗?
似乎没有提供这样的 API 来实现这一点,是否可以使用一些钩子技术,但这必须是可靠的,并且不会被反病毒工具视为间谍软件?
还有其他选择吗?
如果这不可能,是否可以在标准打开文件对话框中的空格键或工具栏中添加一个调用我的对话框的按钮,该按钮允许用户选择一个文件,然后将所选文件的路径返回到“文件名" 标准对话框的输入框?
任何点击、链接和代码示例将不胜感激。
从 Vista 开始,FileOpen/FileSave 对话框现在是“通用项对话框”,其中 IFileOpenDialog 和 IFileSaveDialog 是两个已发布的实现。
由于它们只是具有已知 CLSID 的 COM 对象,因此您可能只需通过使用其 CLSID 重新注册来替换它们即可。从来没有尝试过这样的事情,可能会敲响各种警钟。
Pre-Vista 文件对话框可以在 process 中挂钩,但我从未遇到过有关全局挂钩或等效项的任何内容。
如果您将文件/文件夹复制到对话框的文件名字段,它通常会粘贴完整路径。
例如,如果您同时打开了一个调用标准打开/保存对话框的程序,并且在您要使用的文件或路径上打开了一个窗口(打开/保存到),您可以简单地复制文件/文件夹,然后粘贴到对话框的文件名字段中,它将插入文件/文件夹的完整路径。不需要自定义脚本!
或者,对于那些使用此步骤失败的自定义对话框的程序,将窗口中的相同文件/文件夹复制到同一窗口的地址栏中(假设它是可见的)。这将粘贴完整路径,您可以再次复制,然后将此完整路径粘贴到自定义对话框中。我在创建 Office 超链接 (Ctrl+K) 时经常使用它,因为“插入超链接”对话框不适用于第一种方法。
您也可以使用类似的方法,但将其粘贴到地址栏字段中即可。