|
|
||
|
[ トップ
| ヘルプ
] | ||
スクリプトの開発 Tips †Sleipnirスクリプト を開発する上での Tips です。
文字列を Shift_JIS や UTF-8 でエンコードする。 †↓JScript のみですがこちらで関数のライブラリが公開されています。 Webからファイルをダウンロードする †[JScript] [VBScript] sSource = "http://www.roy.hi-ho.ne.jp/mutaguchi/image/wshlabs.png" 'ダウンロード元
sDest = "test.png" 'コピー先
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
oHTTP.Open "GET", sSource, False
oHTTP.Send
Set Stream = WScript.CreateObject("Adodb.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.Write oHTTP.responseBody
Stream.Savetofile sDest, adSaveCreateOverWrite
Webからテキストファイルを取得し、文字列に代入する †[JScript] [VBScript] Dim s
s = GetInternetTextFile("http://www.yahoo.co.jp","UTF-8")
Msgbox s
'===== インターネットファイル取得処理 =====
Private Function GetInternetTextFile(URL, sCode)
Dim ado
Set ado = CreateObject("ADODB.Stream")
Call ado.open
ado.Type = 1 '=== adTypeBinary
Call ado.Write(GetHTMLSource(URL))
ado.Position = 0
ado.Type = 2 '=== adTypeText
ado.Charset = sCode
GetInternetTextFile = ado.ReadText
Call ado.Close
Set ado = Nothing
End Function
'===== HTMLソース取得処理 =====
Private Function GetHTMLSource(URL)
Dim xHTTP
Set xHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Call xHTTP.open("GET", URL, False)
Call xHTTP.send
GetHTMLSource = xHTTP.responseBody
Set xHTTP = Nothing
End Function
クリップボードの文字列を読み込む †InternetExplorerオブジェクトを使います。 (ただし、インターネットゾーンのセキュリティ設定によっては動作しません) [JScript] [VBScript] Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
'クリップボードの文字列を取得。
sClipBoard = Ie.Document.parentWindow.clipboardData.getData("text")
Ie.Quit
MsgBox sClipBoard
クリップボードに文字列を書き込む †InternetExplorerオブジェクトを使います。 (ただし、インターネットゾーンのセキュリティ設定によっては動作しません) [JScript] [VBScript] Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
'クリップボードに「あいうえお」という文字列を書き込む。
Ie.Document.parentWindow.clipboardData.setData "text","あいうえお"
'以下のようにすると、クリップボードの中身を消去できます。
'Ie.Document.parentWindow.clipboardData.clearData "text"
Ie.Quit
ウィンドウのブラウザエンジンを判別する。 †[JScript] pnir = new ActiveXObject("Sleipnir.API");
id = pnir.GetDocumentID(pnir.ActiveIndex);
document = pnir.GetDocumentObject(id);
if (typeof(document.URL) == 'unknown'){
//true なら Gecko。
}
else {
//false なら IEエンジン。
}
[VBScript] JScript で VBScript の InputBox() 関数を使う。 †Windows Script Control を使用するので、 [JScript] //pnir = new ActiveXObject("Sleipnir.API");
/***** JScript で VBScript の InputBox() 関数を使う関数 *****/
function InputBox(){
var scVB, VBarg, farglen, fvartype, reword, i;
farglen = Math.min(arguments.length, 7);
try {
scVB = new ActiveXObject("ScriptControl");
}
catch(e) {
reword = pnir.InputBox(arguments[0], ((farglen > 2) ? arguments[2] : ''));
return((pnir.Result == 1) ? reword : undefined);
}
VBarg = '';
for (i = 0; i < farglen; i++){
fvartype = typeof(arguments[i]);
if (i > 0){VBarg += ', ';}
if (fvartype == 'number' || fvartype == 'object' && arguments[i] instanceof Number){
VBarg += arguments[i].toString();
}
else if (fvartype != 'undefined'){
VBarg += '\"' + arguments[i].toString().replace(/[\"]/g, '\"\"') + '\"';
}
else if (i < 3 || i == 5){
VBarg += '\"\"';
}
}
VBarg = VBarg.replace(/[\r\n]+/g, '\" \& $&\"').replace(/[\r]/g, 'Chr\(13\) \& ').replace(/[\n]/g, 'Chr\(10\) \& ');
scVB.Language = 'VBScript';
return(scVB.Eval('InputBox\(' + VBarg + '\)'));
}
【説明】 ただし、上記MSDNページの資料には 『[キャンセル] をクリックすると、InputBox 関数は長さ 0 の文字列 ("") を返します。』と書かれていますが、 var strWord = InputBox('文字を入力してね', 'ダイアログのタイトル', 'デフォルトの文字列');
if (typeof(strWord) != 'undefined'){
//「OK」が押された時の処理を記述する。
}
else {
//「キャンセル」が押された時の処理を記述する。
}
とすると良いでしょう。 また、Windows Script Controlがインストールされていない環境では Sleipnir.API の InputBox() メソッドが代わりに呼び出されるようになっており、VBScript の InputBox() 関数と同様に UserAction スクリプトを wscript.exe で実行する †sleipnir.CreateObject("WScript.Shell").Run で自らを wscript.exe で実行すれば if (typeof(sleipnir) == 'object'){
sleipnir.CreateObject("WScript.Shell").Run('\"' + sleipnir.ScriptFullName + '\"');
} else {
//TODO コードをここに記述してください。
}
|