100分如何获取webbrowser的<head>标签内容
在c++ builder 2009中
问题一:获取TWebBrowser网页源码,好像只能获取到<body>标签的内容,但如何获取<head>标签中的<Scripts>内容呢??
问题二:webbrowser中的__fastcall Navigate2(OleVariant URL, OleVariant Flags, OleVariant TargetFrameName, OleVariant PostData) 如何使用?务必给出例子。
[解决办法]
第一个问题,将WebBrowser中的全部源码显示在Memo1中:
while (wb->Busy) Application->ProcessMessages();const int nBufferSize = 0x300000;HGLOBAL hGlobal = GlobalAlloc(GPTR, nBufferSize);if (hGlobal){ IStream *pStream; if (SUCCEEDED(::CreateStreamOnHGlobal(hGlobal, true, &pStream))) { IPersistStreamInit *psi; if (SUCCEEDED(wb->Document->QueryInterface( IID_IPersistStreamInit, (void **)&psi))) { if (SUCCEEDED(psi->Save(pStream, false))) { AnsiString str = AnsiString((char *)hGlobal); // 如果网页是UTF8编码需要转换一下 Memo1->Lines->Add(Utf8ToAnsi(str)); // 否则直接显示在Memo中 // Memo1->Lines->Add(str); } psi->Release(); } pStream->Release(); } else ::GlobalFree(hGlobal);}
[解决办法]
第二个问题,大概是这样:
char *str = "action=Loging&Username=用户名&Password=密码";SAFEARRAYBOUND sabound[48];sabound[0].cElements = strlen(str);sabound[0].lLbound = 0;SAFEARRAY *psa = SafeArrayCreate(VT_UI1, 1, sabound);for (unsigned int n = 0; n < strlen(str); n++){ SafeArrayPutElement(psa, (long *)0, (void *)str[n]);}OleVariant vEmpty = NULL;OleVariant vPostData = psa;OleVariant vUrl = "http://www.ccrun.com/index.asp";WebBrowser->Navigate2(vUrl, vEmpty, vEmpty, vPostData, vEmpty);SafeArrayDestroy(psa);
[解决办法]
学习了
[解决办法]
妖哥说的很清楚了~~~
学习
[解决办法]
学习下了。
[解决办法]
老妖针对第一个问题的办法我测试了一下,有些问题 会重复加载html文件。