theworld或遨游浏览器有这个功能:捕获正在播放的歌曲的地址,alt+鼠标点击就可以保存了
我的思路:通过查看网页代码,使用正则找到.wma或.mp3;
但是音乐网站有防盗链,把音乐的url地址写在javascript里,比如这样: http://www.qq163.com/song/7819/94984.htm
<script language="JavaScript">这个如何处理?
<!--
var isFF=(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)
var objPlayer = document.getElementById("MediaPlayer");
if(isFF){objPlayer=document.MediaPlayer;}
var strFile0 = "/new9/qiang4/0104/3.Wma";
objPlayer.url = s_list+strFile0;
objPlayer.src = s_list+strFile0;
//-->
</script>
<script language="javascript">
PlayerGetState(objPlayer);
var mlid = 94984;
</script>
真实地址是:http://wmadd.qq163.com:8181/wmass88/new9/qiang4/0104/3.Wma
这个是动态改变的,只能在播放的时候获取
7 个解决方案
#1
从你贴的js来看,它是通过运行时修改
objPlayer.url = s_list+strFile0;
objPlayer.src = s_list+strFile0;
var objPlayer = document.getElementById("MediaPlayer");
----------页面中有个 id = "MediaPlayer"的元素
你在运行时用IHTMLDocument3::getElementById() 得到该元素,然后使用IHTMLElement::getAttribute获取其 src/url属性即可
objPlayer.url = s_list+strFile0;
objPlayer.src = s_list+strFile0;
var objPlayer = document.getElementById("MediaPlayer");
----------页面中有个 id = "MediaPlayer"的元素
你在运行时用IHTMLDocument3::getElementById() 得到该元素,然后使用IHTMLElement::getAttribute获取其 src/url属性即可
#2
url是FLASH对象的特定属性,src是MEDIA PLAYER的特定属性,你可以直接从对象获取播放器接口,然后读取对应的属性即可。
#3
使用抓包工具
#4
VOID OnGetHtml(VOID)谢谢大家,成功了,上面的代码哪些是不是可以省略掉?
{
IDispatchPtr spDisp;
if(WebBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
{
MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
MSHTML::IHTMLElementPtr spHtmlElement;
spHtmlDocument->get_body(&spHtmlElement);
HRESULT hr;
MSHTML::IHTMLElementCollection* pColl=NULL;
hr=spHtmlDocument->get_all(&pColl);
if(SUCCEEDED(hr))
{
MSHTML::IHTMLElement* pElem=NULL;
_variant_t index;
index.vt=VT_I4;
index.intVal=0;
_variant_t name("MediaPlayer");
IDispatchPtr disp;
disp=pColl->item(name,index);
if(disp==NULL)
hr=E_FAIL;
else
{
hr=disp->QueryInterface(&pElem);
}
if (SUCCEEDED(hr)&& pElem != NULL)
{
//
BSTR bstrhtml;
_bstr_t bstrt="url";
_variant_t vt;
vt=pElem->getAttribute(bstrt,0);// get_outerHTML(&bstrhtml);
MsgBox((LPCWSTR)_bstr_t(vt));
// pElem->click();
pElem->Release();
}
}
}
#5
还有个问题:
怎么判断网页正在刷新,IWebBrowser::Refresh是让它刷新,怎么截获程序中ie浏览器刷新的消息?
怎么判断网页正在刷新,IWebBrowser::Refresh是让它刷新,怎么截获程序中ie浏览器刷新的消息?
#6
新问题请另外开帖(如果没分了你就开0分贴)
这样也方便后来的人查找。
这样也方便后来的人查找。
#7
想学习学习
#1
从你贴的js来看,它是通过运行时修改
objPlayer.url = s_list+strFile0;
objPlayer.src = s_list+strFile0;
var objPlayer = document.getElementById("MediaPlayer");
----------页面中有个 id = "MediaPlayer"的元素
你在运行时用IHTMLDocument3::getElementById() 得到该元素,然后使用IHTMLElement::getAttribute获取其 src/url属性即可
objPlayer.url = s_list+strFile0;
objPlayer.src = s_list+strFile0;
var objPlayer = document.getElementById("MediaPlayer");
----------页面中有个 id = "MediaPlayer"的元素
你在运行时用IHTMLDocument3::getElementById() 得到该元素,然后使用IHTMLElement::getAttribute获取其 src/url属性即可
#2
url是FLASH对象的特定属性,src是MEDIA PLAYER的特定属性,你可以直接从对象获取播放器接口,然后读取对应的属性即可。
#3
使用抓包工具
#4
VOID OnGetHtml(VOID)谢谢大家,成功了,上面的代码哪些是不是可以省略掉?
{
IDispatchPtr spDisp;
if(WebBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
{
MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
MSHTML::IHTMLElementPtr spHtmlElement;
spHtmlDocument->get_body(&spHtmlElement);
HRESULT hr;
MSHTML::IHTMLElementCollection* pColl=NULL;
hr=spHtmlDocument->get_all(&pColl);
if(SUCCEEDED(hr))
{
MSHTML::IHTMLElement* pElem=NULL;
_variant_t index;
index.vt=VT_I4;
index.intVal=0;
_variant_t name("MediaPlayer");
IDispatchPtr disp;
disp=pColl->item(name,index);
if(disp==NULL)
hr=E_FAIL;
else
{
hr=disp->QueryInterface(&pElem);
}
if (SUCCEEDED(hr)&& pElem != NULL)
{
//
BSTR bstrhtml;
_bstr_t bstrt="url";
_variant_t vt;
vt=pElem->getAttribute(bstrt,0);// get_outerHTML(&bstrhtml);
MsgBox((LPCWSTR)_bstr_t(vt));
// pElem->click();
pElem->Release();
}
}
}
#5
还有个问题:
怎么判断网页正在刷新,IWebBrowser::Refresh是让它刷新,怎么截获程序中ie浏览器刷新的消息?
怎么判断网页正在刷新,IWebBrowser::Refresh是让它刷新,怎么截获程序中ie浏览器刷新的消息?
#6
新问题请另外开帖(如果没分了你就开0分贴)
这样也方便后来的人查找。
这样也方便后来的人查找。
#7
想学习学习