VBScriptのCOMオブジェクトでWindowsの機能を制御する方法

VBScriptは、簡易的なスクリプト言語であり、Windows環境においてさまざまなタスクを自動化するために使用されます。

その中でも、COM(Component Object Model)オブジェクトを利用することで、Windowsの多くの機能を制御することが可能です。

特に、ファイル操作、クリップボード操作、インターネットエクスプローラーの自動制御、Windowsのショートカットの作成方法などを紹介します。

これらの操作を理解することで、Windows上でのスクリプトによる自動化の基礎を学ぶことができるでしょう。

VBScriptでCOMオブジェクトを使用する方法

COMオブジェクトは、Windowsのさまざまな機能にアクセスするためのインターフェースを提供します。

VBScriptでは、CreateObject関数を使ってCOMオブジェクトを生成し、そのオブジェクトのメソッドやプロパティを操作します。

以下に、基本的なCOMオブジェクトの生成方法を示します。

Set obj = CreateObject("オブジェクト名")

例えば、ファイルシステムを操作するためには、Scripting.FileSystemObjectというCOMオブジェクトを使用します。

ファイルシステムの操作

ファイルの作成、読み取り、書き込み

VBScriptのFileSystemObjectを使用すると、ファイルやフォルダの作成、削除、移動、コピーが簡単に行えます。

以下は、ファイルを作成して、内容を書き込む例です。

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile("C:\example.txt", True)

file.WriteLine("これはサンプルテキストです。")
file.Close

次に、作成したファイルの内容を読み取るコードです。

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\example.txt", 1)

Do Until file.AtEndOfStream
    line = file.ReadLine
    WScript.Echo line
Loop

file.Close

フォルダの操作

フォルダを作成する場合も同様に、FileSystemObjectを使用します。

Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder("C:\TestFolder")

フォルダの削除も可能です。

fso.DeleteFolder("C:\TestFolder")

クリップボードの操作

VBScriptを使用して、クリップボードの内容にアクセスするには、InternetExplorer.Applicationオブジェクトを利用します。

このオブジェクトを介して、クリップボードにテキストをコピーしたり、クリップボードからテキストを取得したりすることができます。

以下は、クリップボードにテキストをコピーする例です。

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
ie.document.parentWindow.clipboardData.setData "Text", "クリップボードにコピーするテキスト"
ie.Quit

クリップボードからテキストを取得する場合は、次のようにします。

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
clipboardText = ie.document.parentWindow.clipboardData.getData("Text")
WScript.Echo clipboardText
ie.Quit

インターネットエクスプローラーの自動操作

VBScriptを使って、インターネットエクスプローラーを自動で操作することも可能です。

たとえば、特定のウェブページを開いて内容を操作することができます。

以下は、Googleのウェブページを開いて、検索ボックスに文字を入力し、検索ボタンを押す例です。

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "http://www.google.com"

Do While ie.Busy
    WScript.Sleep 100
Loop

ie.document.getElementById("lst-ib").Value = "VBScript"
ie.document.getElementsByName("btnK")(0).Click

このスクリプトを実行すると、インターネットエクスプローラーが自動で起動し、「VBScript」というキーワードをGoogleで検索します。

ショートカットの作成

VBScriptを使って、Windowsのショートカットを自動で作成することもできます。

例えば、特定のアプリケーションのショートカットをデスクトップに作成するコードは以下のようになります。

Set shell = CreateObject("WScript.Shell")
desktopPath = shell.SpecialFolders("Desktop")
Set shortcut = shell.CreateShortcut(desktopPath & "\MyApp.lnk")

shortcut.TargetPath = "C:\Path\To\YourApp.exe"
shortcut.WorkingDirectory = "C:\Path\To"
shortcut.Description = "My Application"
shortcut.Save

このスクリプトを実行すると、デスクトップに「MyApp.lnk」というショートカットが作成され、そのショートカットをダブルクリックすると指定したアプリケーションが起動します。

システム音量の操作

システムの音量をVBScriptから操作するには、COMオブジェクトのSAPI.SpVoiceを使用します。

このオブジェクトは、システムボリュームを調整するための簡単なインターフェースを提供します。

以下は、音声を使用してシステム音量を制御する例です。

Set voice = CreateObject("SAPI.SpVoice")
voice.Volume = 50  ' 音量を50%に設定
voice.Speak "音量が50%に設定されました。"

音量の値は0から100の範囲で指定でき、指定した音量でメッセージを読み上げます。

演習問題

この記事で紹介した内容をもとに、以下の演習問題を解いてみてください。

演習1: ファイルのコピーと移動

VBScriptを使って、C:\source.txtというファイルをC:\destination.txtにコピーするスクリプトを書いてください。

コピー後、元のファイルを削除してください。

演習1:解答例
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\source.txt", "C:\destination.txt"
fso.DeleteFile "C:\source.txt"

演習2: クリップボードの操作

VBScriptを使って、クリップボードに「Hello, World!」という文字列をコピーするスクリプトを書いてください。

その後、クリップボードの内容を取得して表示するスクリプトを書いてください。

演習2:解答例
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
ie.document.parentWindow.clipboardData.setData "Text", "Hello, World!"
clipboardText = ie.document.parentWindow.clipboardData.getData("Text")
WScript.Echo clipboardText
ie.Quit

演習3: ショートカットの作成

デスクトップに「Calculator」のショートカットを作成し、そのショートカットをクリックするとWindowsの電卓が起動するスクリプトを書いてください。

演習3:解答例
Set shell = CreateObject("WScript.Shell")
desktopPath = shell.SpecialFolders("Desktop")
Set shortcut = shell.CreateShortcut(desktopPath & "\Calculator.lnk")

shortcut.TargetPath = "C:\Windows\System32\calc.exe"
shortcut.WorkingDirectory = "C:\Windows\System32"
shortcut.Description = "Calculator"
shortcut.Save

まとめ

この記事では、VBScriptでCOMオブジェクトを使用してWindowsのさまざまな機能を制御する方法を紹介しました。

ファイルシステムの操作、クリップボードの管理、インターネットエクスプローラーの自動操作、ショートカットの作成など、これらの操作をマスターすることで、Windows環境での自動化が大幅に効率化されます。