jQueryPad++获取已安装的浏览器
一直在使用一个叫做 jQueryPad 的软件,这是一个国外的开发者使用 WPF 技术开发的小工具。还是蛮不错的,因为某原因,我决定自己来重写一个类似的功能。
我写的这个名字就叫做 jQueryPad++,界面什么的都尽量模仿那个软件好了。jQueryPad 免费但是不开源,里面有一个功能是列出了已经安装的浏览器,点击可以用对应的浏览器打开,在jQueryPad++里,获取浏览器的实现如下:
代码里定义了一个 GetBrowsers() 方法,该方法返回一个枚举,循环枚举可以获取安装的浏览器了。代码访问注册表的某一位置可以获取到电脑上一些已经安装程序的路径,然后再进行过滤就可以了。
在刚开始的时候,我并不清楚要在注册表的哪个位置去查找,为了让同行以后避免发生这样的情况,同时也为 jQueryPad++ 打个小广告,这里放上代码实现。懒得弄代码高亮了,大家凑活看吧。
protected IEnumerable<Browser> GetBrowsers() //这里是返回迭代,Browser是一个自定义的类
{
//查找注册表的路径。这个路径我也是看了好久才发现地方的。使用了Registry ,需要添加对应的命名空间。
RegistryKey path = Registry.LocalMachine.OpenSubKey(@”Software\Microsoft\Windows\CurrentVersion\App Paths”);
string[] list = path.GetSubKeyNames();
foreach (string item in list)
{
if (item.StartsWith(“Firefox”, StringComparison.InvariantCultureIgnoreCase)) //检查是否包含Firefox ,比较字符串的时候忽略大小写
{ //如果存在firefox的键,那么默认值保存的就是程序的可执行文件的完整路径,还有一个是 Path 返回的是可执行文件的路径。同时需要注意的是 yield return 的使用,对于返回或者说是获取可迭代类型,需要这么使用,不能直接使用 return ,表明继续进行下一个操作。相关的关键词是 yield break ,表示返回。总之呢有点类似 continue 和 break 的味道。
yield return new Browser(“Firefox”, path.OpenSubKey(item).GetValue(“”).ToString());
}
if (item.StartsWith(“chrome”, StringComparison.InvariantCultureIgnoreCase)) {yield return new Browser(“Chrome”, path.OpenSubKey(item).GetValue(“”).ToString()); } // 这里和下面是获取 chrome 和 ie ,和上面的方式一样,添加opera 也是相同的道理。
if (item.StartsWith(“IExplor”, StringComparison.InvariantCultureIgnoreCase)){yield return new Browser(“Internet Explorer”, path.OpenSubKey(item).GetValue(“”).ToString());}
}
}
代码到这里,主要的功能已经实现。关于 jQueryPad++ ,等发布的时候我会单独写一个帖子,目前还有一些WPF方面的小问题需要梳理,看来还是没有达到一种语言通,就所有的语言都会的境界。