溺れる者はUWSCを掴め!
ADODB.Streamを使ったダウンロード
- 2011-12-05 (Mon)
- 実用スクリプト
ADODB.Streamを使ったダウンロードのサンプルを作ってみました。IEのダイアログを使った方法でもいいんですがいちいちダイアログが出る分時間が掛ります。画像など連続でダウンする場合はこちらの方がいいかもです。但し、ブラウザベースじゃないと弾かれる場合もあるので適材適所で使い分けを。(※弾かれた場合も一応ファイルは作られる)
IEのダイアログ版はこら
溺れる者はUWSCを掴め! - IEでサイトからダウンロード
//------------------------------------------ //動作環境 XPsp3,IE8で確認 //---------------<書式>------------------- // AdoDownLoad(ファイルのURL[,保存先フルパス,保存名,上書き設定]) // ※[]内省略可 //------<初期設定>------- PUBLIC Stream=CreateOLEObj( "ADODB.Stream" ) PUBLIC oHttp=CreateOLEObj("MSXML2.XMLHTTP") PUBLIC defalt_over_w=false //上書き初期設定(上書きする:True しない:false) //------</初期設定>------ //---------------<sample 1>------------------- url="http://***.com/007.jpg" //ダウン先 dl_pas="C:\Down" //保存場所のフルパス dl_name="sample.jpg" //保存名 over_w=false AdoDownLoad(URL,dl_pas,dl_name,over_w) //---------------<sample 2>------------------- //URL以外デフォルト設定の場合 url="http://***.com/007.jpg" //ダウン先 //※ファイル名は最後の"/"以下になる AdoDownLoad(URL) //-- Procedure AdoDownLoad(url,dl_pas="",dl_name="",over_w=defalt_over_w) sleep(1) ifb dl_name="" dl_name=Betweenstr(url,"/",,-1) endif ifb !(dl_pas="") ifb !(copy(dl_pas,Length(dl_pas))="\") dl_pas=dl_pas+"\" endif endif dl_pas=dl_pas+dl_name oHttp.Open("GET",url,0) oHttp.Send GetStream(oHttp.responseBody,dl_pas,dl_name,over_w) Fend //-- Procedure GetStream(obj,dl_pas,dl_name,over_w) ifb over_w over_w=2 else over_w=1 endif Stream.Open Stream.Type=1 Stream.Write=obj COM_ERR_IGN Stream.SaveToFile(dl_pas,over_w) COM_ERR_RET Stream.Close Fend
- Comments: 1
IEでサイトからダウンロード
- 2011-12-03 (Sat)
- 実用スクリプト
ファイルのアップロードを作ったのでついでにダウンロードも作ってみようという事でそのサンプル
追記12/21:サンプルの最後の行Fendが抜けてました<(_ _)>
ちなみにアップロードの方はこちらで
溺れる者はUWSCを掴め! - IE8でファイルのアップロード
//------------------------------------------ //動作環境 XPsp3,IE8で確認 //---------------<書式>------------------- // 右クリックから保存などの場合使用 // IEDownLoad(IE,ファイルのURL[,保存先フルパス,保存名,上書き設定]) // ※[]内省略可 //---------------<sample 1>------------------- url="http:/****.****.com/down/test.txt" dl_pas="C:\Down" //保存場所のフルパス dl_name="sample.txt" //保存名 over_w=false //上書きする:True しない:false IEDownLoad(IE,URL,dl_pas,dl_name,over_w) //---------------<sample 2>------------------- //URL以外デフォルト設定の場合 url="http:/****.****.com/down/test.txt" IEDownLoad(IE,URL) //-- Procedure IEDownLoad(IE,URL,dl_pas="",dl_name="",over_w=true) IE.Navigate2(URL,"&H800") Repeat //反応が悪いのでダイアログが消えるまで繰返す dl=getid("ファイルのダウンロード","#32770", -1) Ctrlwin(dl,ACTIVATE) sckey(dl,VK_S) sleep(1) Until getid("ファイルのダウンロード","#32770")=-1 SaveDialog(dl_pas,dl_name,over_w) Fend Procedure SaveDialog(dl_pas="",dl_name="",over_w=true) dl=getid("名前を付けて保存","#32770", -1) ifb dl_name="" dl_name=getstr(dl) endif ifb !(dl_pas="") ifb !(copy(dl_pas,Length(dl_pas))="\") dl_pas=dl_pas+"\" endif endif dl_pas=dl_pas+dl_name Sendstr(dl,dl_pas) Clkitem(dl, "保存(S)") sleep(2) sub=getid(GET_ACTIVE_WIN,"#32770", -1) ifb pos("上書きしますか?",getstr(sub,1,4))>0 ifb over_w sckey(sub,VK_Y) else sckey(sub,VK_N) Clkitem(dl, "キャンセル") endif endif dl=getid("完了しました","#32770") ifb !(Chkbtn(dl,"ダウンロードの完了後、このダイアログ ボックスを閉じる")) sckey(dl,VK_C) endif dl=getid("ダウンロードの完了","#32770") Clkitem(dl, "閉じる") Fend
- Comments: 0
IE8でファイルのアップロード
- 2011-11-19 (Sat)
- 実用スクリプト
IE8以降からはセキュリティの関係でファイルアップロードのファイル指定をDOM操作等で出来なくなっている。
こういうやつ→ファイル指定をするには参照ボタンを押してダイアログ経由からUPするわけだが今後も汎用的につかうと思われるのでユーザー関数を作成しておくといい。
今回はそのサンプル
//------------------------------------------ //動作環境 XPsp3,IE8で確認 //---------------<sample>------------------- file="C:\001.Jpg"//アップするファイルのフルパス name="upfile" //参照ボタンのnameが"upfile"の場合 IEupload(IE,name,file) //---------------</sample>------------------- //--ダイアログ用スレッド起動&参照ボタンクリック Procedure IEupload(IE,name,file) Thread FileupDialog(file) doc=IE.document COM_ERR_IGN for i=0 to doc.forms.length-1 for ii=0 to doc.forms(i).elements.length-1 ifb doc.forms(i).elements(ii).name=name doc.forms(i).elements(ii).click() Break 2 endif next next COM_ERR_RET Fend //--ダイアログファイル選択&ボタンクリック Procedure FileupDialog(file) id = Getid("アップロードするファイルの選択","#32770",-1) sleep(1) Ctrlwin(id,ACTIVATE) Sendstr(id,file,1,True) Clkitem(id,"開く(O)") Fend
- Comments: 1
- Search
- Meta
- Links
- Feeds
- PR
- PR