扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:朱先忠 来源:天极网 2007年11月13日
关键字:
using System; using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)] public struct OLECMDTEXT { public uint cmdtextf; public uint cwActual; public uint cwBuf; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=100)]public char rgwz; } [StructLayout(LayoutKind.Sequential)] public struct OLECMD { public uint cmdID; public uint cmdf; } // IOleCommandTarget的Interop定义 [ComImport, Guid("b722bccb-4e68-101b-a2bc-00aa00404770"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleCommandTarget { //重要: 下面方法的顺序非常重要,因为本示例中我们使用的是早期绑定,详见MSDN中有关.NET/COM互操作的参考。 void QueryStatus(ref Guid pguidCmdGroup, UInt32 cCmds, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] OLECMD[] prgCmds, ref OLECMDTEXT CmdText); void Exec(ref Guid pguidCmdGroup, uint nCmdId, uint nCmdExecOpt, ref object pvaIn, ref object pvaOut); } |
private Guid cmdGuid = new Guid("ED016940-BD5B-11CF-BA4E-00C04FD70816"); private enum MiscCommandTarget { Find = 1, ViewSource, Options } |
private mshtml.HTMLDocument GetDocument() { try { mshtml.HTMLDocument htm = (mshtml.HTMLDocument)axWebBrowser2.Document; return htm; } catch { throw (new Exception("不能从WebBrowser控件中获取文件对象")); } } //查看源码的方法 public void ViewSource() { IOleCommandTarget cmdt; Object o = new object(); try { cmdt = (IOleCommandTarget)GetDocument(); cmdt.Exec(ref cmdGuid, (uint)MiscCommandTarget.ViewSource, (uint)SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref o, ref o); } catch(Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } } public void Find() { IOleCommandTarget cmdt; Object o = new object(); try { cmdt = (IOleCommandTarget)GetDocument(); cmdt.Exec(ref cmdGuid, (uint)MiscCommandTarget.Find, (uint)SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref o, ref o); } catch(Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } } //显示“选项”对话框的方法 public void InternetOptions() { IOleCommandTarget cmdt; Object o = new object(); try { cmdt = (IOleCommandTarget)GetDocument(); cmdt.Exec(ref cmdGuid, (uint)MiscCommandTarget.Options, (uint)SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref o, ref o); } catch { // 注意:因为该过程相应的CMDID是在Internet Explorer处理 // ,所以此处的异常代码块将总被激活,即使该对话框及其操作成功。 //当然,你可以通过浏览器选择设置来禁止这种错误的出现。 //不过,即使出现这种提示,对你的主机也无任何损害。 } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者