已得到IE的IHTMLDOCMENT2接口,然后遍历元素找到了需要修改的元素,可以获取值,但是却无法修改值,不知是为什么。修改值会将原来的值清空。(简单的说就是只能读和清空,不能写入值。)
标题是可以修改的,
BSTR bstrV = ::SysAllocString(L"abc");
spDoc->put_title(bstrV);//假设spDoc是IHTMLDocument2的指针。
spDoc->get_title(&bstrV);//可以正确的设置和获取标题
部分代码如下:
IHTMLInputElement* input;
hr=pDisp->QueryInterface(IID_IHTMLInputElement,(void**)&input);
input->get_value(&bs); //读取值正常
input->put_value(p); //写入值失败,会清空原有的值
你用的还是BSTR,是否和你的空间释放有关
http://www.cnblogs.com/2018/archive/2010/08/13/1799321.html
http://www.newxing.com/S951867C11045/MyIEView.cpp
非常感谢,你给的地址中的内容我早看过了,就是没看仔细。提醒了一下空间释放我才想起来了。我没有使用CString来初始化字符串,直接用了一个指针。原因是我以前没用过宽字符,对此不太了解。
原来我的写法是:BSTR p=L"abcdef";然后直接传递p作为参数。
示例中的写法是:CString p="abcddd";然后p.AllocSysString()作为参数。
我原以为写两种写法等价呢。
BSTR必须得用 SysAllocString(L"abc");来分配值。