【问题标题】:How Can I extend the Behaviour of Windows Explorer Click or Extending the Shell Behaviour如何扩展 Windows Explorer 的行为单击或扩展 Shell 行为
【发布时间】:2010-08-12 12:21:51
【问题描述】:

有什么方法可以扩展或修改 Windows Explorer 点击的行为?

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

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

【问题讨论】:

    标签: c# .net shell windows-shell


    【解决方案1】:

    Hmya,这远远超出了“点击”。您必须编写一个 shell 扩展。由于 CLR 版本注入问题,在 .NET 4.0 之前,在 C# 中执行此操作是完全不受限制的。非托管程序(例如,记事本)在使用 shell 对话框(如 FolderBrowser 或 OpenFileDialog)时会将 CLR 注入其中。这可能会导致需要另一个版本的 CLR 的后续代码失败。解决了,CLR 4.0 支持多个 CLR 版本的内存中并行操作。

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

    最后但同样重要的是,调试这种代码是一场噩梦。这是您正在修补的重要 Windows 进程。犯了一个错误会给你留下一个无法使用的外壳。重新启动会启动相同的 borked shell。

    嗯,需要黑带技能。我认为 .NET 4.0 的可用性应该已经启动了一些提供友好托管包装器的项目。我只是还没有看到。也把它当作一个标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多