通过SharpShell快速实现Windows Shell扩展

在.NET 4引入了CLR in-process side-by-side特性后,我们也可以通过C#编写Windows Shell了。我们可以在微软的All-In-One Code Framework里面找到相关示例,在院子里也有几篇文章介绍它:

但是,研究过这些示例后便会发现:虽然用C#编写Shell扩展比用C++简单不少,但仍然比较繁琐,有许多需要注意的地方,一不小心就会出错

今天,在CodePlex上发现了一个SharShell的项目,通过它可以快速创建Shell扩展,非常方便。例如,对如如下的一个菜单扩展:

    

只需要用如下几句话就能实现:

    [ComVisible(true)]
    [COMServerAssocation(AssociationType.ClassOfExtension, ".txt")]
    public class CountLinesExtension : SharpContextMenu
    {
        protected override bool CanShowMenu()
        {
            return true;
        }

        protected override ContextMenuStrip CreateMenu()
        {
            var menu = new ContextMenuStrip();
            var itemCountLines = new ToolStripMenuItem
            {
                Text = "Count Lines...",
                Image = Properties.Resources.CountLines
            };

            itemCountLines.Click += (sender, args) => CountLines();
            menu.Items.Add(itemCountLines);
            return menu;
        }

        private void CountLines()
        {
            var builder = new StringBuilder();
            foreach (var filePath in SelectedFilePaths)
            {
                builder.AppendLine(string.Format("{0} - {1} Lines", Path.GetFileName(filePath), File.ReadAllLines(filePath).Length));
            }
            MessageBox.Show(builder.ToString());
        }
    }

更多信息可以参看CodeProject上的入门教程:.NET Shell Extensions - Shell Context Menus

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值