IE8和IE9打印时遇到内存泄露
在用IE8和IE9打印时,调用到下面的函数:
IOleCommandTarget::Exec()
该函数声明如下:
HRESULT STDMETHODCALLTYPE Exec(
__RPC__in_opt const GUID *pguidCmdGroup,
DWORD nCmdID,
DWORD nCmdexecopt,
__RPC__in_opt VARIANT *pvaIn,
__RPC__inout_opt VARIANT *pvaOut)
第一个参数的取值,我只能找到两个:NULL(也就是standard group)和CGID_MSHTML;
第二个参数就是打印命令,对应第一个参数命令组,分别是OLECMDID_PRINT(或OLECMDID_PRINT2)和IDM_PRINT;
第三个参数,我设置为OLECMDEXECOPT_DONTPROMPTUSER;
第四个参数是我一个本地模板文件的路径;
第五个参数为NULL。
结果如下:
当第一个参数是NULL,第二个参数是OLECMDID_PRINT,每打印一次消耗大约2-3M内存,而当第二个参数是OLECMDID_PRINT2时,函数返回OLECMDERR_E_NOTSUPPORTED;
当第一个参数是CGID_MSHTML,每打印一次消耗大约20M内存。
所以,最重要的问题是:怎么样才能避免内存泄漏?
其次,第一个参数的取值还有哪些?目前这两个有什么区别?
OLECMDID_PRINT2命令似乎并不支持,不知在哪种情况下可用?它与OLECMDID_PRINT命令有什么区别?
最后更新:2017-05-14 23:44:13
上一篇:
链接打印机时出现输入用户名和密码。
下一篇:
惠普暗影精灵2怎么开WiFi共享
IE 11 无法更新,错误代码:0x80092004
IE11提示typeerror,对象不支持openremotedoc属性或方法
script7002:XMLHttpRequest Network Error 0x80004004
ie11 install error :14081 ,the referenced assembly could not be
Cookies are no longer stored in files. Please use
you need to install the following CSPs before the enrollment,Microsoft
网页自动刷新
IE11 完全打不开任何网页,除了百度的首页和搜索页面
您的浏览器禁止运行ActiveX控件,请先修改浏览器设置,否则程序无法运行
ie中嵌入ocx导致闪烁的问题