procedure showJs();
begin
//這句意思是WebBrowser執行wb里js腳本回傳的值。wb里有個js方法叫getAllPass
showmessage(wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001'));
end;
procedure Tform_Main.btn_FailClick(Sender: TObject);
var
id:dword;
begin
showJs();//在主執行緒里是可以正確執行的。
CreateThread(nil,0,@showJs,nil,0,id);//在多執行緒里 就會出現這個例外 (Access violation at address 68A98099 in module 'mshtml.dll'. Read of address 000001EC)
end;
{我就是想,在多執行緒里執行 wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001')獲取,我想要的值,但是就是出現以上例外。。快一天了。百度/google都沒搞定。只能來csdn拜托大牛了!小弟謝謝啦!怎么解決?}
uj5u.com熱心網友回復:
加上coInitialize試下,還有最好不要在執行緒中用ShowMessage吧。。。用MessageBox(0,....);
uses ActiveX;
procedure showJs();
begin
coInitialize(nil);
try
//這句意思是WebBrowser執行wb里js腳本回傳的值。wb里有個js方法叫getAllPass
showmessage(wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001'));
finally
CoUninitialize;
end;
end;
uj5u.com熱心網友回復:
老大,這個我加過了呀。不行呢。~~~~~ 我只是把我代碼簡化下,這個就類似小demo,加了還是出現相同的例外!
大能!!
uj5u.com熱心網友回復:
Access violation at address 68A98099 in module 'mshtml.dll'. Read of address 000001EC這個錯誤提示說明,發生錯誤的代碼是在mshtml.dll里
這說明,你在這句話:
wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001')
中呼叫時有問題
傳遞引數錯誤或者是無法獲取的主線中的某些資源。那么關鍵性的問題就可能存在于這個wb.OleObject.document.parentWindow
這個windows是不是存在? 你可以考慮使用其他技術。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134460.html
標籤:VCL組件開發及應用
