用自定义的保存文件对话框替换任何程序打开的保存文件对话框

本文关键字:保存文件 对话框 程序 任何 替换 自定义 | 更新日期: 2023-09-27 17:50:27

我正在开发一个Windows版本控制/文件同步系统。如果在经典保存文件对话框的底部有一个复选框,可以选择选中/取消选中我的文件版本控制,那就太好了。

是否有可能通过任何程序(word等)侦听打开的保存文件对话框,并用自定义对话框(带有额外的复选框)替换/覆盖该对话框?

如果复选框被选中,则应该弹出另一个窗口,用户可以在其中输入一些额外的元数据。然后将数据存储在本地数据库中。

我已经使用了dmihailescu(提供的链接)的方法,但它非常复杂,我不知道如何修改该示例以侦听其他程序打开的保存文件对话框。

http://www.codeproject.com/Articles/19566/Extend-OpenFileDialog-and-SaveFileDialog-the-easy?msg=4779306 xx4779306xx

另一种方法是使用FileSystemWatcher,但这是非常昂贵的监视整个系统,而且它不是很舒服,因为如果用户想要版本控制它,必须询问用户创建的任何文件。

我希望有人能帮助我解决这个问题,或者有一些额外的技巧/方法。

谢谢。

编辑:用例

用户必须编写一个文档并创建一个新的word-doc。当他/她点击word的"另存为"菜单项时,我定制的"保存文件"对话框会弹出,底部有一个复选框,表示该文件是否需要进行版本控制。如果复选框是"活动的",则会出现一个新窗口,用户可以在其中输入额外的元数据。然后将数据存储在本地数据库中。

在我的例子中,只有元数据(如路径等)应该存储在数据库中。让我们假设一个用户将相同的文件存储在两个不同的目录中(一个文件是"旧的",另一个文件是当前的)。如果用户打开这个文件的旧版本,我的系统应该识别出一个"新"的文件已经存储在另一个地方,并同步这些文件。

这应该是一个非常简单的例子

用自定义的保存文件对话框替换任何程序打开的保存文件对话框

您有两个功能:保存和版本控制。这两项任务实际上都相当复杂。因此你不应该把它们混在一起。你最好使用标准的Windows API来保存文件,不要改变它。想想你如何支持几个不同的Windows版本,这将是多么痛苦。

我假设你有自己的UI,并且没有集成Windows资源管理器(如Tortoise Svn或Dropbox)。在这种情况下,你可以先进行版本控制,然后使用标准API保存最终文件。

如果你集成了Windows资源管理器,我建议你看看Tortoise svn的源代码。