最近はめっきりVBScriptも触っていませんが、 ソフトウェア管理支援システム開発日記も使用しなくなったので、 置いておいたら便利な分だけ引っ越してきておきます。 サンプルとしては、ファイル(フォルダ)の存在チェック、新規作成/削除や拡張子取得などですね。 進級制作で作っていたときに必要だった情報です。Option Explicit ' フォルダ名指定 Dim fdName, flName, cMsg fdName = "iroha" flName = fdName & "\test.txt" ' FileSystemObject呼び出し Dim Fso Set Fso = CreateObject( "Scripting.FileSystemObject" ) ' ◆フォルダ存在チェック If Not Fso.FolderExists( "iroha" ) Then ' 無ければ作成 Fso.CreateFolder( "iroha" ) End If ' ◆ファイル存在チェック If Not Fso.FileExists( flName ) Then ' 無ければ作成 Fso.CreateTextFile( flName ) End If ' ◆ファイルの拡張子のみを表示 Msgbox( "拡張子:" & Fso.GetExtensionName( flName ) ) ' ◆フォルダ内ファイル数カウント Msgbox( "ファイル数:" & Fso.GetFolder( fdName ).Files.Count ) ' Msgboxの戻り値をcMsgに格納 cMsg = Msgbox( "「" & fdName & "」を削除しますか?", vbYesNo, "確認" ) ' 「はい」の場合 If cMsg = vbYes Then ' ◆フォルダ丸ごと削除 Fso.DeleteFolder( fdName ) End If
ホーム > VBScript
2010年3月9日火曜日
VBScript 簡素にファイルチェック
2009年11月18日水曜日
iTunesをVBScriptから触るためのメモ
iPhoneが愛用機になってから、音楽を聴くのはiTunesになりました。 その影響で再生する時にはいつもByursideというガジェットで操作しています。 iTunesの様に大きくなく、ガジェットバーに配置することでいつでも触れる上、 再生だけでなくループ設定やジャケット表示も出来るので、 全く不満は無いです、凄い便利。 で。 ふと考えてみると、ガジェットは基本XML+HTML+JSのはずなので、 結果iTunesはJSで触れるはずですよね。 ということで調べてみると、やはりJSで触れることが分かりました。 情報は少ないものの、十二分にデータ取得や再生処理が行えるようです。 以下が参考になりそうなサイト様です(Java含む)。JSで触れると書きましたが、「Wscript」オブジェクトからなので、 実質VBScriptで使用することが出来ます。 ただ単に再生/一時停止するだけなら、以下のソースの様になります。Dim iTunes Set iTunes = WScript.CreateObject("iTunes.Application") iTunes.PlayPause()こんなに簡単に出来るんですね。
カテゴリ:
JavaScript,
VBScript,
ソース
2009年10月31日土曜日
【自作】Sleipnir別ブラウザ表示スクリプトインストーラ 「exBrowserSleipnir」
この投稿で書いた、 Sleipnirでのアクティブページを別のブラウザで開くスクリプトを、 ダウンロードしインストールする、インストーラを作成しました。 その名も「exBrowserSleipnir」。 以下からダウンロード及び実行出来ます。 詳しい利用方法は、zip内の「Readme.txt」を参照して下さい。 この投稿で書いていたのはFirefoxに関してですが、 このインストーラを利用すると、Chrome用も同時にインストールされます。 当然、Sleipnir及びFirefox、Chromeがインストールされていない場合、 エラーと共に終了することになります。 主に自分用なので、細かなエラーチェックもしていないのが特色(?)です。 インストーラを実行し終了した後、「スクリプトの再読み込み」を行うと、 「スクリプト」内へ以下の様に表示されます。
Sleipnir APIを利用したアクティブページ別ブラウザ表示
Sleipnirを利用している人には分かることなのですが、 標準でいくつかのスクリプトが用意されています。 その中には、内部でSleipnirAPIを使用しているモノもあります。 SleipnirAPIに関してはこちら。 タブブラウザ Sleipnir オンラインデータベース(Sleipnir.API リファレンス) で。 SleipnirAPIを利用して、アクティブページのURLを取得し、 別のブラウザで表示するスクリプトを作成したので、以下にまとめます。 まずはソースを。 そんなに難しい内容ではないです。' ****************************************************** ' FirefoxでSleipnirアクティブページを表示 ' ****************************************************** Option Explicit Dim Pnir, WshShell, Url ' SleipnirAPI呼び出し Set Pnir = CreateObject("Sleipnir.API") ' 現在開いているページのURL取得 Url = "firefox " Url = Url & Pnir.URL ' 非同期で呼び出し Set WshShell = WScript.CreateObject("WScript.Shell") Call WshShell.Run( Url )ソースはFirefoxで開いていますが、Chromeでも確認済です。 「名前を指定して実行」出来るブラウザに対してはいけるはずです。 ブラウザを変える場合には、12行目のブラウザ名を変更してください。 以下が使用準備・方法となります。Sleipnirのメニューバー「スクリプト」内のスクリプトが実行出来ない場合は、 「ツール」→「Sleipnirオプション内」から、 スクリプト実行を許可する必要があります。
スクリプトが利用できるようになると、 「スクリプト」内の「スクリプトの整理」を選択できるようになるので選択。
Sleipnirのスクリプトディレクトリが表示されるので、 「Firefoxで開く.vbs」を作成し、上のソースをそのまま貼り付けて保存。
Sleipnirに戻り、先ほど作成したスクリプトファイルを表示するために、 「スクリプト」内の「スクリプトの再読み込み」を行います。
「Firefoxで開く.vbs」が表示されるので選択。 Sleipnirで開いているページが、Firefoxで表示されれば完了です。 なお、当然ながらFirefoxで開くので、 インストールされていない場合にはエラーが発生します。 何しろエラーチェックしていないもので・・・。
2009年10月17日土曜日
VBScript fakepath回避選択ファイルパス取得サンプル
IEditorを作成した時に、 程よく使いやすいサンプルが出来たのでメモ。 ソースが長いので、見づらい場合には閉じて下さい。 ▼ソースを開く/たたむ以下参考メモ。 ソースの大本は、以下を参考にしました。 ファイル選択ダイアログを開く:SQLの窓 IEオブジェクトを作成した際にエラーチェックしていませんが、 「IEの入っていないWindows環境」を見たことがないのに加え、 Vista+IE8でも問題無く通過しているので、様子見の状態です。 このサンプルでは、 ファイルを選択した際に拡張子を判別しています。 別に無くても良いのですが、IEオブジェクトを使用するという仕様上、 ファイル選択ダイアログ時に拡張子を限定することが出来ないため、 仕方無くファイルを選択した後の判断となります。 IE8の場合、<INPUT>に格納されるファイルパスを取得した際に、 セキュリティの問題上「C:\fakepath\」となります。 その回避として、 何度も紹介させて頂いている以下のサイトを参考にしました。 IE8で、input type=fileの.valueがc:\fakepath\filenameを返す。(その2): Windows Script Programming' ********************************************************** ' ファイル選択ダイアログを表示し、ファイルパスを取得する ' ********************************************************** Function GetFilePath() ' 変数宣言 FilePath = "" ' ファイルパス ExtName = "exe" ' 拡張子判断用 ' 初期メッセージ Msgbox("パスを取得するファイル(." & ExtName & ")を選択して下さい。") ' IEオブジェクトを用意 Set Ie = CreateObject("InternetExplorer.Application") Ie.Navigate( "about:blank" ) Ie.document.getElementsByTagName("BODY")(0).innerHTML = _ "<INPUT id=FilePath type=file><TEXTAREA id=Text></TEXTAREA>" Ie.document.getElementById("FilePath").click ' 選択ファイルパス格納 FilePath = Ie.document.getElementById("FilePath").value ' 選択ファイルパスチェック If FilePath = "" then ' ファイルが選択されなかったので終了 Msgbox("ファイルが選択されなかったので終了します。") Wscript.Quit end If Set Fso = CreateObject( "Scripting.FileSystemObject" ) If Fso.GetExtensionName( FilePath ) <> ExtName then ' 実行ファイル(.exe)が選択されなかったので終了 Msgbox("選択されたファイルが実行ファイル(." & ExtName & ")で無いので、終了します。") Wscript.Quit End If ' IE8の場合はセキュリティの関係上、 ' 「C:\fakepath」となるので、別処理取得 If InStr( FilePath, ":\fakepath\" ) = 2 Then ' コピー&ペースト用定数用意 Const OLECMDID_COPY = 12 Const OLECMDID_PASTE = 13 Const OLECMDID_SELECTALL = 17 '(&H11) Const OLECMDEXECOPT_DODEFAULT = 0 ' FilePathの内容をコピーし、Textへペースト Ie.Document.all.FilePath.focus Ie.ExecWB OLECMDID_SELECTALL,OLECMDEXECOPT_DODEFAULT Ie.ExecWB OLECMDID_COPY,OLECMDEXECOPT_DODEFAULT Ie.Document.all.Text.focus Ie.ExecWB OLECMDID_PASTE,OLECMDEXECOPT_DODEFAULT FilePath = Ie.Document.all.Text.value End If ' Ie破棄 Ie.Quit Set Ie = Nothing ' 最終的にファイルパス取得 GetFilePath = FilePath End Function
2009年10月16日金曜日
【更新】「IEditor Ver1.12」
さらに対象レジストリを削除するように、更新しました。 詳細は「IEditor Ver1.00」の情報を見てもらえればわかると思います。 これでひとまず、登録/修正/設定削除が行えるようになったので、 大方の機能としては完了かと。
【更新】「IEditor Ver1.11」
※追記:最新版は「Ver1.12」ですので、以下からダウンロードして下さい。 【更新】「IEditor Ver1.12」 実は、Vista+IE8で開発したので、 ちゃんとした動作確認をしていませんでした。 学校のPC(XP+IE6)で見てみると、別の場所に書き込んでいました。 ちゃんと確かめればいいのに・・・。それに対応したVer1.11へアップデートです。
【更新】「IEditor Ver1.10」
※追記:最新版は「Ver1.12」ですので、以下からダウンロードして下さい。 【更新】「IEditor Ver1.12」 よく考えてみると、テキトーなバージョン管理です。 機能を一新したからといって、 バージョンを0.1も上げてしまっていいのでしょうか。というわけで、先ほど投稿した内容を含めてのバージョンアップ版です。今回もまた、Readme.txtに詳しいことが書いてありますが、軽く。 Ver1.00時には、ただ登録するだけのツールでしたが、 IEオブジェクトによるファイル指定によって、 別エディタを登録・変更することが可能となりました。 IE8は相変わらず対象外ですが、 IE8で行われた場合の「C:\fakepath」回避も搭載しました。 以下のサイトを再び参考にさせて頂きました。 この場でなんですが、ありがとうございます。 IE8で、input type=fileの.valueがc:\fakepath\filenameを返す。(その2): Windows Script Programming IEオブジェクトを利用しての、IE8対応ファイルパス取得コードは、 また時間がある時にまとめます。
IE8 【C:\fakepath】って何なのよ
今月14日に上げた「IEditor」をバージョンアップしようと思い、 先生のサイトの「ファイル選択ダイアログを開く」を参考に、 ローカルファイルを参照しようと思ったのですが、思わぬエラーが発生です。 IE8の環境で、 「InternetExplorer.Application」を利用してパスを取得すると、 「C:\fakepath\TeraPad.exe」というパスを取得しました。 また自分のソースをちゃんと読まないクセのせいか、と思って見直しても、 もちろんそんな内容が含まれたサンプルじゃありません。 Googleで検索してみると、どうやらIE8のセキュリティ対策のようです。リンク先の情報によれば、以下の様な対処法があるようです。セキュリティレベルを下げるのは困りものですし、 上で挙げた、ファイル選択のための仮ページを「信頼するサイト」に登録できるわけでもなく、 パスの取得方法を変える以外、方法はなさそうです。 まぁ、今回のツールに関してのIE8は対象外なので、 そもそもIE8の場合は処理しなければ、それはそれで良いのですが。
- IEのセキュリティレベルを下げる。
- 「信頼するサイト」に登録する。
- ファイルパスの取得方法を変更する。
2009年10月14日水曜日
【自作】IEソースエディタ登録ツール 「IEditor」
※追記:最新版は「Ver1.12」ですので、以下からダウンロードして下さい。 【更新】「IEditor Ver1.12」 InternetExplorerの標準ソースエディタはメモ帳ですが、 そもそもメモ帳は使いにくい上に、 Shift-JIS以外の文字コードだと化けて使い物になりません。 OSを新しく入れた際などに、IEのソースエディタを変更することが、 もうすでに自分の中でのデフォルト作業と化しています。 ということで、その手間を省くために、 IEのソースエディタに別のエディタを登録するためのツールを作成しました。 その名も「IEditor」。以下からダウンロード出来ます。 また、本体は.vbsなので、直接「開く」ことで実行することも出来ます。 直接の場合は以下から。zipファイルに含まれている「Readme.txt」に細かい事が書かれているので、 以下には軽く説明を。 すでに書いた通り、このツールはIEのソースエディタを「登録」するものです。 現時点(Ver1.00)では、決めうちでTerapadを対象として登録します。 さらに、Terapadでもインストーラによってインストールされたものに限ります。 IE8ではソースエディタの設定が変更になったので、IE6,7が対象となります。 すでにソースエディタが登録されている場合には、処理が終了します(何も無し)。 VBScriptでのレジストリ操作の勉強がてらに作ったので、 所々にコメントをちりばめてあります。 中身を編集して使用する場合には参考にどうぞ。 以下が「IEditor.vbs」のソースです。' ********************************************************** ' 【IEditor / IEソースエディタ登録ツール】 ' ' 詳しくはReadme.txtを参照。 ' エディタパスは、11行目を変更して下さい。 ' ********************************************************** ' WshShellオブジェクト用意 Set WshShell = WScript.CreateObject("WScript.Shell") ' エディタパス用意 EditorPath = "C:\Program Files\TeraPad\TeraPad.exe" ' レジストリパス/データ型用意 RegCheckPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\View Source Editor\Editor Name\" RegType = "REG_SZ" ' 対象レジストリ存在チェック On Error Resume Next WshShell.regread( RegCheckPath ) If Err.Number = 0 Then ' 存在するので終了 Msgbox("すでに登録済なので、終了します。") Wscript.Quit Else ' ソースエディタ登録確認 cMsg = MsgBox( _ "パス【" & EditorPath & "】として、" & VbCrLf & "IEのソースエディタを登録しますか?" _ , vbYesNo _ , "IEditor - IEソースエディタ設定" _ ) If vbNo = cMsg then ' 登録しないので終了 Wscript.Quit Else ' 対象レジストリ書き込み WshShell.RegWrite RegCheckPath, EditorPath, RegType Msgbox("ソースエディタを登録しました。") End If End If





