WPF webBrowser 打印,修改打印内容,添加HTML代码
1、引用system32中的SHDocVw.dll
2、引用命名空间
using System.Runtime.InteropServices;
using SHDocVw;
3、在所在的类定义变量
代码 [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("6d5140c1-7436-11ce-8034-00aa006009fa")] internal interface IServiceProvider { [return: MarshalAs(UnmanagedType.IUnknown)] object QueryService(ref Guid guidService, ref Guid riid); } static readonly Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
4、打印方法
代码
IServiceProvider serviceProvider = null;
if (webbrowse.Document != null)
{
serviceProvider = (IServiceProvider)webbrowse.Document;
}
Guid serviceGuid = SID_SWebBrowserApp;
Guid iid = typeof(SHDocVw.IWebBrowser2).GUID;
SHDocVw.IWebBrowser2 myWebBrowser2 = (SHDocVw.IWebBrowser2)serviceProvider.QueryService(ref serviceGuid, ref iid);
object NullValue = null;
myWebBrowser2.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, ref NullValue, ref NullValue);
上面的代码,网上应该很多,大家都能找到的,下面的代码就是如果在打印的时候添加HTML代码
引用:
C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Common\Microsoft.mshtml.dll
修改DLL的属性,嵌入互操作类型:FALSE,不修改会报错。
if (webBrowser1.Document != null)
{
serviceProvider = (IServiceProvider)webBrowser1.Document;
var InnerHTML = (((mshtml.HTMLDocumentClass)(serviceProvider)).documentElement).innerHTML;
InnerHTML = "<B>百度在线<B><br>";
(((mshtml.HTMLDocumentClass)(serviceProvider)).documentElement).insertAdjacentHTML("beforeBegin", InnerHTML);
}
这段代码,替换上面的那段。主要是insertAdjacentHTML方法,详细怎么用百度~~~