177
人物
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導致閃爍的問題