function GetWebPath(web:TWebBrowser): string
var
item : TLvItem
clsName: array[0..MAX_PATH] of char
hwndLv: HWND
selCount,fileCount,selMark:integer
fileName: array[0..MAX_PATH] of char
begin
hwndLV := GetWindow(web.Handle,GW_CHILD)
hwndLV := GetWindow(hwndLV,GW_CHILD)
GetClassName( hwndLV,clsName,MAX_PATH)
if(UpperCase(clsName)<>'SYSLISTVIEW32')then Exit
Result := web.LocationURL
Result := StringReplace(Result,'file:///','',[rfIgnoreCase])
Result := StringReplace(Result,'/','\',[rfReplaceAll])
if(Result[length(Result)]<>'\')then
Result := Result + '\'
fileCount := ListView_GetItemCount(hwndLV)
selCount := ListView_GetSelectedCount(hwndLV)
selMark := ListView_GetSelectionMark(hwndLV)
if(selCount=0)or(selMark=-1)then
exit
ListView_GetItemText(hwndLV,selMark,0,@fileName[0],MAX_PATH)
Result := Result + fileName
end
//调用拦桐示简薯坦例
procedure TForm1.Button1Click(Sender: TObject)
begin
ShowMessage( GetWebPath(WebBrowser1) )
end
注意:
uses commctrl
老实说不一定要webBrowser,这是Windows下载文件界面啊,不是VB.Net画出氏兆来的。
真的是做下载文件,WebClient.DownloadFile方法就足够了,调用方法后会自动d出Windows下载任务窗口。
在VS.NET里也提供了一个com接口,可以直接调用迅雷的dll,下载文件可以让你自由选择是用迅雷下载还是通型禅过Windows下载任务来执行下载。
webBroser下载文件
FileInfo file = new System.IO.FileInfo(Server.MapPath(path))if (File.Exists(Server.MapPath(path)))
{
string name = Path.GetFileName(Server.MapPath(path))
//存在文件
Response.Clear()
Response.Buffer = false
//通知浏览器下载文件而不是打开
Response.ContentType = "application/octet-stream"
//下载的文件名
Response.AppendHeader("content-disposition", "attachmentfilename=" + name)
//文件的大小
Response.AppendHeader("Content-Length", file.Length.ToString())
Response.WriteFile(path)
}
介绍一个更简单的方法给你,从webbrowser获取点击的超连接,然后自由选择下载,先在引用里引用com组件
然后在点击事件中加代码
string url = webBrowser1.Document.Links[1].GetAttribute("href")ThunderAgentLib.AgentClass agent = 卜核尘new ThunderAgentLib.AgentClass()//创建对象
agent.AddTask(url, "默认保存文件名", "C:\\默认路径", "", "", 1, 0, 5)
agent.CommitTasks2(1)//提交
我用的是C#代码,VB.NET大同小异
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)