2006/12/23

http://blogs.wankuma.com/mutaguchi/archive/2006/07/07/31826.aspx
の続きです。クリップボード中に複数URLが複数行に記述されている場合、それらをまとめてダウンロードするように改良しました。

Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
 
sDLFolder = "C:\download"
 
Set Ie = WScript.CreateObject("InternetExplorer.Application")
'Ie.Visible = True
Ie.Navigate "about:blank"
Do While Ie.Busy Or Ie.ReadyState<>4
    Wscript.Sleep 10
Loop
'クリップボードの文字列を取得。
sClipBoard = Ie.Document.parentWindow.clipboardData.getData("text")  
Ie.Quit
 
If InStr(sClipBoard,vbCrLf) Then
    aURLs = Split(sClipBoard,vbCrLf)
Else
    aURLs = Array(sClipBoard)
End If
 
For Each sURL In aURLs
    If Left(sURL,5)="http:" Then
        sDest = sDLFolder & "\" & Mid(sURL,InStrRev(sURL,"/")+1)
        Set oHTTP = WScript.CreateObject("Msxml2.XMLHTTP")
        oHTTP.Open "GET", sURL, False
        oHTTP.Send
        Set Stream = WScript.CreateObject("Adodb.Stream")
        Stream.Type = adTypeBinary
        Stream.Open
        Stream.Write oHTTP.responseBody
        Stream.Savetofile sDest, adSaveCreateOverWrite
    End If
Next
 
msgbox "done"

ところがこれをIE7環境で実行すると毎回こんなダイアログがでるんですね。
このWebページがクリップボードへアクセスするのを許可しますか?
インターネットゾーンのレベルのカスタマイズで、「スクリプトによる貼り付け処理の許可」を「ダイアログを表示する」から「有効にする」に変えればダイアログは出なくなりますがお勧めしません。それよりは"about:blank"の代わりに何かローカルのファイルを指定してやったほうがいいです。ローカルのファイルはマイコンピュータゾーンで動作するのでダイアログが出ません。

元記事:http://blogs.wankuma.com/mutaguchi/archive/2006/12/23/53018.aspx

2006/07/07

IEを使って指定したURLのファイルをダウンロードしようとしても、IEで開かれてしまったりしてなかなかうまくいきません。そこでこんなスクリプトを作ってみました。クリップボードに格納されたURLのファイルをダウンロードするスクリプトです。PowerShellではなくWSHのスクリプトですが、たまにはこんなのも良いでしょう。

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy And IE.readyState=4
    Wscript.Sleep 100
Loop
'クリップボードの文字列を取得。
sClipBoard = Ie.Document.parentWindow.clipboardData.getData("text")  
Ie.Quit 
If Left(sClipBoard,5)="http:" Then
    sDest = Mid(sClipBoard,InStrRev(sClipBoard,"/")+1)
    Const adTypeBinary = 1
    Const adSaveCreateNotExist = 1
    Const adSaveCreateOverWrite = 2
    Set oHTTP = WScript.CreateObject("Msxml2.XMLHTTP")
    oHTTP.Open "GET", sClipBoard, False
    oHTTP.Send
    Set Stream = WScript.CreateObject("Adodb.Stream")
    Stream.Type = adTypeBinary
    Stream.Open
    Stream.Write oHTTP.responseBody
    Stream.Savetofile sDest, adSaveCreateOverWrite
    msgbox "done"
End If
元記事:http://blogs.wankuma.com/mutaguchi/archive/2006/07/07/31826.aspx


Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー

Books

Twitter