public bool OleCommandExec(bool bTopLevel, MSHTML_COMMAND_IDS CmdID, IHTMLDocument2 doc2) { IOleCommandTarget m_Doc2OleCommandTraget = null; IntPtr m_Guid_MSHTML = m_NullPointer; bool bret = false; try { byte[] guidbytes = Iid_Clsids.Guid_MSHTML.ToByteArray(); m_Guid_MSHTML = Marshal.AllocCoTaskMem((int)(guidbytes.Length * 2)); Marshal.Copy(guidbytes, 0, m_Guid_MSHTML, guidbytes.Length); if (doc2 == null) { return(false); } m_Doc2OleCommandTraget = doc2 as IOleCommandTarget; if (m_Doc2OleCommandTraget == null) { return(false); } bret = (m_Doc2OleCommandTraget.Exec(m_Guid_MSHTML, (uint)CmdID, (uint)OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, m_NullPointer, m_NullPointer) == Hresults.S_OK) ? true : false; Marshal.FreeCoTaskMem(m_Guid_MSHTML); m_Guid_MSHTML = m_NullPointer; } finally { if (m_Guid_MSHTML != m_NullPointer) { Marshal.FreeCoTaskMem(m_Guid_MSHTML); } } return(bret); }
public bool OleCommandExec(bool bTopLevel, MSHTML_COMMAND_IDS CmdID) { if (this.m_WBWebBrowser2 == null) return false; IOleCommandTarget m_Doc2OleCommandTraget = null; IntPtr m_Guid_MSHTML = m_NullPointer; bool bret = false; try { byte[] guidbytes = Iid_Clsids.Guid_MSHTML.ToByteArray(); string sname = Iid_Clsids.Guid_MSHTML.ToString(); m_Guid_MSHTML = Marshal.AllocCoTaskMem((int)(guidbytes.Length * 2)); Marshal.Copy(guidbytes, 0, m_Guid_MSHTML, guidbytes.Length); IHTMLDocument2 doc2 = null; if (bTopLevel) doc2 = m_WBWebBrowser2.Document as IHTMLDocument2; else doc2 = this.GetActiveDocument(); if (doc2 == null) return false; m_Doc2OleCommandTraget = doc2 as IOleCommandTarget; if (m_Doc2OleCommandTraget == null) return false; bret = (m_Doc2OleCommandTraget.Exec(m_Guid_MSHTML, (uint)CmdID, (uint)OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, m_NullPointer, m_NullPointer) == Hresults.S_OK) ? true : false; Marshal.FreeCoTaskMem(m_Guid_MSHTML); m_Guid_MSHTML = m_NullPointer; } finally { if (m_Guid_MSHTML != m_NullPointer) Marshal.FreeCoTaskMem(m_Guid_MSHTML); } return bret; }