请问那种在Html上“自动填表格”的功能如何实现?

Hacken2 2003-09-05 03:45:59
如Html上的用户名、EMail地址不用人工写用程序模拟。
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩曦 2003-09-23
  • 打赏
  • 举报
回复
mark
LeeZi 2003-09-23
  • 打赏
  • 举报
回复
mark
microran2000 2003-09-09
  • 打赏
  • 举报
回复
所谓自动填充表单工具,都是假的。
  这是因为每一个表单的数据都依附于一定的网页,对应一个URL网址,每一个HTML Input元素都对应一个ID或者name属性。随着网址的不同或者name ID不一样。自动添表工具的局限性就会表现出来。造成填充的效果驴头不对马嘴。
  辅助添表工具应该是这样实现,首先它应该实现托放添表,因为托放的过程要比重新录入内容要快。如果仍不满足,那么你可以把它加入到IE的右健菜单中。只是表的数据越多,就会是菜单变长。
  另外添表工具应该在数据提交给远程服务器之前保存所有数据到一个ini或者xml文
件。前者比较简单,但是保存的内容有限,后者可以保存大量文本内容。
  这种保存是十分有益的,比如在csdn发表帖子的textarea元素中,会经常发生输入法冲突,造成死键盘现象。通过这种保存,可以保证输入的数据不会丢失。即便整个IE因为某种异常退出。辅助工具也可以从上面保存的数据中,把数据自动填充到表单的元素区域。可以设想如果您在发送web邮件时,因为输入法原因或者IE原因异常退出,重新录入的残酷。你就会体会到这种保存是多么的有益。当然,这样记录可能会暴漏个人隐私。所以在保存的时候,不适合明文保存,可以采用base64编码,防一下君子就行了。
  填充的过程也很简单,masterz提供的代码是再详细不过了。
叶子哟 2003-09-08
  • 打赏
  • 举报
回复
分析接口就可以了!主要要了解html对象
masterz 2003-09-06
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////
//Fill input field in IE
//If it works, it is written by masterz,otherwise I don't
//know who writes it^_^
///////////////////////////////////////////////////////
#import <mshtml.tlb> // Internet Explorer 5
#import <shdocvw.dll>
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
SHDocVw::IShellWindowsPtr m_spSHWinds;
if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
{
IDispatchPtr spDisp;
long nCount = m_spSHWinds->GetCount();
for (long i = 0; i < nCount; i++)
{
_variant_t va(i, VT_I4);
spDisp = m_spSHWinds->Item(va);
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if (spBrowser != NULL)
{
IDispatchPtr spDisp;
if(spBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
{
MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
MSHTML::IHTMLElementPtr spHtmlElement;
if(spHtmlDocument==NULL)
continue;
spHtmlDocument->get_body(&spHtmlElement);
if(spHtmlDocument==NULL)
continue;
HRESULT hr;
MSHTML::IHTMLElementCollection* pColl=NULL;
hr=spHtmlDocument->get_all(&pColl);
if(pColl!=NULL&&SUCCEEDED(hr))
{
long lcount = 0;
pColl->get_length(&lcount);
for(int i=0;i<lcount;i++)
{
_variant_t index;
index.vt=VT_I4;
index.intVal=i;
IDispatchPtr disp;
disp=pColl->item(index,index);
if(disp==NULL)
hr=E_FAIL;
else
{
MSHTML::IHTMLInputElementPtr pInput(disp);
if(pInput)
{
BSTR bstrtype;
pInput->get_type(&bstrtype);
printf(_bstr_t(bstrtype));
if(StrCmpW(bstrtype,L"text")==0)
{
pInput->put_value(_bstr_t("fill it"));
printf("fill a field\n");
}
SysFreeString(bstrtype);
}
}

}
pColl->Release();
}
}

}
}

}
else
{
printf("Shell Windows interface is not avilable\n");
}
CoUninitialize();
return 0;
}

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧