溺れる者は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