检测用户何时取消Windows中的“打开方式”对话框

时间:2017-05-24 22:19:05

标签: c# winforms

与此处的答案相关:https://stackoverflow.com/a/29572621/4055837

使用shell32.dll SHOpenWithDialog提示用户选择一个应用程序来打开文件。

有没有办法让我以编程方式检测用户是否取消了对话框(使用取消按钮或[x]关闭对话框? 返回的结果(0x0)与用户选择应用时收到的结果相同,如果用户改变了关于使用指定应用打开文件的想法,则不允许我采用不同的代码路径。

[编辑澄清] 对于我正在使用的场景,我需要能够区分用户取消“打开方式”和用户选择应用程序以指示我的应用程序处理与文件相关的信息。该应用程序可能已经或可能不在注册表的OpenWith密钥中。

对于具有异常扩展名的文件和具有多个或自定义选项的文件,打开的行为可能会打开;例如,一个名为foo.file的测试文件,其中包含OpenWith键和一个记事本++ .exe的条目仍会激活对话框,询问我是否仍然要使用notepad ++。

对于许多文件类型,我现有的关于文件和父文件夹锁定的检查工作,但对于某些扩展/编辑器,没有维护锁。在这些情况下,我可以通过定期检查文件的更新来检测文件中的更改,但是当我需要响应用户决定取消“打开方式”对话框时,这无效。

[进一步澄清] 该用例要求支持客户打开文件的能力,该文件可能或可能没有在他们选择的可执行文件中的相关可执行文件。这不是运行时之前可用的信息。 该应用程序跟踪应该保护的文件;当授权用户需要打开文件进行编辑或执行时,应用程序需要支持按需操作。

  • 如果他们改变主意并取消打开,则需要将文件保留在安全状态。
  • 如果他们选择要打开文件的可执行文件,则应用程序会将文件发布到该可执行文件。

0 个答案:

没有答案