很多方法都可以修改WebBrowser的内容。比如说修改innerHTML、以流方式修改。
以流方式就不说了,网上很多代码。直接修改innerHTML的方法很简单,但是有个缺点,修改后没保存,最近在做一个小东西,需要在WebBrowser编辑模式和浏览模式中切换,直接修改innerHTML的问题是,切换之后修改的数据丢失了。
另一种修改方法,利用IHTMLDocument2的write方法写入:
procedure write(AText: string); var psSafe: PSafeArray; param: PVariantArg; pwsValue: TBStr; begin try pwsValue := SysAllocString(PWideChar(WideString(AText))); psSafe := SafeArrayCreateVector(VT_VARIANT, 0, 1); if psSafe <> nil then try SafeArrayAccessData(psSafe, Pointer(param)); param^.vt := VT_BSTR; param^.bstrVal := pwsValue; SafeArrayUnaccessData(psSafe); FDoc.write(psSafe); finally SysFreeString(pwsValue); SafeArrayDestroy(psSafe); end; except end; end; 奇怪的是,多写入几次,总会抛出异常。尝试将原来的内容完全清除还是没用。
偶然发现,只须在write后加入FDoc.close就可以了。 来源:http://www.hicpp.com/code/319.html
|