代码之家  ›  专栏  ›  技术社区  ›  Simsons

如何扩展Windows资源管理器的行为单击或扩展Shell行为

  •  0
  • Simsons  · 技术社区  · 15 年前

    是否有任何方法可以扩展或修改Windows资源管理器单击的行为?

    例如,我想修改click事件。单击驱动器时,我应该能够连接到FTP服务器,而不是打开驱动器。驱动器将是安装的驱动器。

    所以我想做的是修改Windows资源管理器的默认行为,或者扩展Shell的行为(我不确定这是否属于Shell扩展)。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Hans Passant    15 年前

    嗯,这是有点超出“点击”。你得写一个shell扩展。在.NET4.0之前,由于CLR版本注入问题,在C中这样做是非常禁止的。非托管程序(比如,记事本)在使用shell对话框(如FolderBrowser或OpenFileDialog)时会将CLR注入其中。这可能导致后续代码失败,需要另一个版本的CLR。解决了这个问题,clr4.0支持多个CLR版本的内存并行操作。

    没有解决的是您需要编写的代码的复杂性。Shell扩展需要COM代码。硬的类型,从IUnknown派生的接口。甚至要开始,您还需要为COM接口编写大量声明。不能将它们从SDK声明中取出,它们只能由C++程序使用。而且它非常容易出错,C#不支持多重继承,您需要声明从其他接口派生的COM接口。

    推荐文章