在IE右键菜单,添加图片保存快捷方式
2009-07-09 14:25
676 查看
先用C#做一个COM
作用为下载图片和图片改名(使用GUID)
在这之前先建立snk文件,sn -k gachal_d_key.snk,在文件放在项目中
注意在VS中,项目->属性->应用程序->信息集信息 中 把程序集COM可见 选择
项目->属性->生成 为COM互操作注册 选择
这里使用了多线程运行SavePhotoFromUrl函数,保证保存图片时不会“卡卡”的
然后在注册表HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt
上添加新项,命名为保存图片(&x),注意X将被设为快捷键
在该项添加一个字符值,名字默认,值为c:/download.htm
再添加一个DWORD值,名字为contexts,值为十六进制的2
在c盘新建名为download.htm的文件,内容如下
OK,以后在IE保存图片就直接右键然后按X就会保存到c:/pic中,要改为其他目录只要修改download.htm的文件即可。
作用为下载图片和图片改名(使用GUID)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; [assembly: AssemblyKeyFile("gachal_d_key.snk")] namespace PicsDown { [Guid("694C1820-04B6-4988-928F-FD858B95C880")] public interface DownLoad_Interface { [DispId(1)] void Down(string url, string dir); [DispId(2)] void SavePhotoFromUrl(string FileName, string Url); [DispId(3)] bool SaveBinaryFile(WebResponse response, string FileName); } // 事件接口Database_COMObjectEvents [Guid("47C976E0-C208-4740-AC42-41212D3C34F0"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface DownLoad_Events { } delegate void MyDelegate(string FileName, string Url); [Guid("9E5E5FB2-219D-4ee7-AB27-E4DBED8E123E"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(DownLoad_Events))] public class DownLoad : DownLoad_Interface { public void Down(string url,string dir) { string FileName; string Url; string tempUrl = url.Substring(url.Length - 5, 5); tempUrl = tempUrl.Substring(tempUrl.IndexOf(".", 0), 4); if (tempUrl == ".jpe") { tempUrl = ".jpeg"; } FileName = @dir + Guid.NewGuid().ToString() + tempUrl; Url = url; MyDelegate del = new MyDelegate(this.SavePhotoFromUrl); IAsyncResult ar = del.BeginInvoke(FileName, Url, null, null); //del.EndInvoke(ar); } /// <summary> /// 从图片地址下载图片到本地磁盘 /// </summary> /// <param name="ToLocalPath">图片本地磁盘地址</param> /// <param name="Url">图片网址</param> /// <returns></returns> public void SavePhotoFromUrl(string FileName, string Url) { bool Value = false; WebResponse response = null; Stream stream = null; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); response = request.GetResponse(); stream = response.GetResponseStream(); if (!response.ContentType.ToLower().StartsWith("text/")) { Value = SaveBinaryFile(response, FileName); } } catch (Exception err) { string aa = err.ToString(); } } /// <summary> /// Save a binary file to disk. /// </summary> /// <param name="response">The response used to save the file</param> // 将二进制文件保存到磁盘 public bool SaveBinaryFile(WebResponse response, string FileName) { bool Value = true; byte[] buffer = new byte[1024]; try { if (File.Exists(FileName)) File.Delete(FileName); Stream outStream = System.IO.File.Create(FileName); Stream inStream = response.GetResponseStream(); int l; do { l = inStream.Read(buffer, 0, buffer.Length); if (l > 0) outStream.Write(buffer, 0, l); } while (l > 0); outStream.Close(); inStream.Close(); } catch { Value = false; } return Value; } } }
在这之前先建立snk文件,sn -k gachal_d_key.snk,在文件放在项目中
注意在VS中,项目->属性->应用程序->信息集信息 中 把程序集COM可见 选择
项目->属性->生成 为COM互操作注册 选择
这里使用了多线程运行SavePhotoFromUrl函数,保证保存图片时不会“卡卡”的
然后在注册表HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt
上添加新项,命名为保存图片(&x),注意X将被设为快捷键
在该项添加一个字符值,名字默认,值为c:/download.htm
再添加一个DWORD值,名字为contexts,值为十六进制的2
在c盘新建名为download.htm的文件,内容如下
<mce:script language="javascript"><!-- var objNetSamp=new ActiveXObject("PicsDown.DownLoad");//创建COM DLL对象 var srcEvent = external.menuArguments.event; var EventElement; if(typeof(srcEvent.clientX) == "undefined") { EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.pointerX, srcEvent.pointerY ); } else { EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY ); } if(EventElement != null && EventElement.tagName == "IMG") { objNetSamp.Down(EventElement.src,"C://pics//"); } // --></mce:script>
OK,以后在IE保存图片就直接右键然后按X就会保存到c:/pic中,要改为其他目录只要修改download.htm的文件即可。
相关文章推荐
- 在IE右键菜单,添加图片保存快捷方式
- 右键菜单添加包含ICON图片的快捷打开方式
- 鼠标右键菜单添加应用快捷方式
- 将应用程序的快捷方式添加到右键“发送到”菜单中
- 为快捷方式文件(lnk文件)右键菜单添加“打开所在文件夹”
- 在快捷方式的右键菜单上添加打开所在目录的菜单项
- LnkWhere--快捷方式右键菜单添加“浏览目标目录”
- 使用Delphi 7 编写一个IE右键菜单项目:自动保存图片
- ubuntu下右键菜单添加新建word、excel文档等快捷方式
- 为右键菜单添加进入CMD快捷方式
- 用VB脚本实现向右键菜单添加快捷方式
- ubuntu下右键菜单添加新建word、excel文档等快捷方式.
- 在IE网页右键中添加“创建到桌面快捷方式”
- Ubuntu的右键菜单中添加“打开终端”快捷方式
- Ubuntu12.04 在右键快捷菜单中添加“Open in Terminal”
- VS MFC 添加右键快捷菜单 Pop-up Menu
- 右键菜单增加进入CMD命令快捷方式
- win7下手动为EditPlus 2添加右键快捷菜单
- windows下修改注册表,添加鼠标右键的快捷方式
- ubuntu右键添加打开终端的快捷菜单