Fioに言わせろ!

いろいろ言わせてもらいます

【Script】AutoItXを使ってVBScriptでクリップボードやウィンドウタイトルを操作

VBScriptでクリップボードの読み書き

Windows上でのちょっとした作業自動化で使えるVBScriptですが、VBScriptだけの機能ではクリップボードの読み書きができないことがちょっと残念です。
f:id:Fio:20160130220706j:plain

そこで色々工夫の余地が出てくるわけですが、VBScriptからクリップボードを使う一つの方法として、AutoItの中に付属しているAutoItXを使う方法があります。

AutoItXは、AutoItをインストールすると、その中のAutoItXフォルダに存在するAutoItX3.dll(64bit WindowsではAutoItX3_x64.dll)というファイルがその実態です(そのファイルさえあればOK)。

AutoItXを使うと、VBScriptからクリップボードを操作したり、開いている他のウィンドウ(Operaなどのブラウザとか)のタイトルを取得したり、そのウィンドウそのものを操作したりできるようになります。

AutoItXの登録

AutoItXを使用するにあたって、AutoIt DownloadsからAutoItをダウンロードしてインストールすればOKです。

ただ、64bit Windowsに変えてから、AutoItのインストールだけではAutoItXが使えないことがあります。

その際に私がやっている方法です。

1. setup.batというファイルを作成します(拡張子が.batであればOK)。
2. ファイルの中身は

rem regsvr32.exe C:\AutoIt3\AutoItX\AutoItX3_x64.dll

 のようにして保存します。(後半はフルパスでファイルを指定)
 64bitでない場合は、AutoItX3.dllを指定します。
3. setup.batを右クリックして「管理者として実行」

もし、64bitでx86用のAutoItX3.dllを使いたい場合は、
regsvr32のx86版である「C:\Windows\SysWOW64\regsvr32.exe」を使います。
(どうして86版が64のフォルダにあるのでしょうか。不明です)

AutoItが要らない場合は、上のダウンロードサイトから.zipの方をダウンロードして、その中のAutoItX3.dll(AutoItX3_x64.dll)を適当なフォルダにコピーして上のsetup.batを作って実行すれば使えるようになります。

VBScriptでAutoItXを試してみる

では、VBScriptからAutoItXを試してみましょう。

クリップボードに文字列をコピー

'AutoItのオブジェクトを作成
Set oAutoIt = CreateObject("AutoItX3.Control")
'文字列をクリップボードにコピー
oAutoIt.ClipPut "なんでやねん"

クリップボードの文字列を取得

Set oAutoIt = CreateObject("AutoItX3.Control")
'クリップボードの文字列を取得
text = oAutoIt.ClipGet()
'取得した文字列を表示
WScript.Echo "クリップボードの文字は「" & text & "」"

Operaのウィンドウタイトルを取得

Set oAutoIt = CreateObject("AutoItX3.Control")
oAutoIt.Opt "WinTitleMatchMode",2
Title = oAutoIt.WinGetTitle(" - Opera", "")
WScript.Echo Title

一つのファイルで続けて実行する場合は「CreateObject("AutoItX3.Control")」は最初の一回だけでOKです。