2011-12-20 63 views
4

我不想关联扩展程序但是文件夹。所以,当我点击桌面来告诉操作系统使用我的应用程序,而不是资源管理器。如何将目录与我的应用程序相关联

我试过用我的程序替换HKEY_CLASSES_ROOT \ Folder \ shell \ open \ command explorer.exe,但它不能正常工作,因此我用我的应用程序打开控制面板和其他东西,这不是我的想。

谢谢!

+6

我只是猜测,但我认为,答案可能是“不这样做” – Hybrid 2011-12-20 17:16:19

回答

5

您想要做的事情可以通过实施自定义IShellFolder来实现。 http://msdn.microsoft.com/en-us/library/windows/desktop/cc144093(v=vs.85).aspx有详细信息。最起码,你必须实现

  1. IPersistFolder接口
  2. 的IShellFolder接口
  3. IEnumIDList接口

这是例如谷歌驱动使用什么

+0

我来到这个解决方案,但它是一个相当复杂的实现,因为我需要有DLL( COM),这将启动我的主要EXE,处理这些电话等。 我希望有一些更简单的解决方案。 要直接调用我的exe文件。 – 2011-12-20 17:30:10

+3

@IvanMark这是我所知的唯一途径 – 2011-12-20 18:09:50

+0

请记住,您将需要32位和64位外壳扩展,因此如果您打算使用Delphi,则需要XE2。 – 2011-12-20 19:15:26

0

Folder进程id表示任何文件夹,包括非文件系统文件夹。正确的ProgID为您的案件是Directory

Reference