PHP 実践 Win32OLE-1
WindowsではCOMという手法によって様々な言語やスクリプトからアプリケーションを操作することが可能です。
VC++やVBは言うに及ばず、有名どころではPerlやRuby等のスクリプト言語もこの方法をサポートしています。
そしてもちろん、PHPもこの手法をサポートしています。 名前からしてWindows環境でしか利用できません。 つまり、Windows版PHPのみでの利用が可能です。当然ですが、Unix環境では利用はできません。 Win版PHPではコアにCOMサポートが含まれていますので、特殊なインストール処理を要しません。
まずは動作の確認を行ってみます。
COMクラスのコンストラクタに渡す第一引数(上記の例でいえば"WScript.Shell")ですが、これは利用するCOMのProgIDを指定することになっています。
MSOfficeのWordであれば"Word.Application"、Excelであれば"Excel.Application"といった具合に、操作したアプリケーション毎に決められたProgIDがあるので、それを渡してやることでCOMオブジェクトを取得します。 以下に主要なアプリケーションのProgIDをいくつか紹介します。
Adobe製品群もCOMをサポートしています。
ただしバージョンによってはサポートしていないので確認が必要です。
ProgIDの最後のxはバージョンを指定しますが、Illustratorであればver10が1となり、CS1では2、CS2では3を指定します。
これはIllustrator10からCOMをサポートするようになったからです。
同じ理由でPhotoShop7が1、PhotoShopCS1が2、PhotoShopCS2が3となっています。
ProgIDの最後のxをそれぞれ適正なバージョンに置き換える必要があります。
そしてもちろん、PHPもこの手法をサポートしています。 名前からしてWindows環境でしか利用できません。 つまり、Windows版PHPのみでの利用が可能です。当然ですが、Unix環境では利用はできません。 Win版PHPではコアにCOMサポートが含まれていますので、特殊なインストール処理を要しません。
まずは動作の確認を行ってみます。
<?php
$WshShell = new COM("WScript.Shell");
var_dump($WshShell);
?>
上記ではシェルへのCOMオブジェクトを取得しています。var_dump( ) によって取得したオブジェクトを表示しています。
表示は
object(com)#1 (0) { }
と表示されたかと思います。
間違いなくCOMオブジェクトが取得できた旨、確認ができたかと思います。
COMクラスのコンストラクタに渡す第一引数(上記の例でいえば"WScript.Shell")ですが、これは利用するCOMのProgIDを指定することになっています。
MSOfficeのWordであれば"Word.Application"、Excelであれば"Excel.Application"といった具合に、操作したアプリケーション毎に決められたProgIDがあるので、それを渡してやることでCOMオブジェクトを取得します。 以下に主要なアプリケーションのProgIDをいくつか紹介します。
| アプリケーション | ProgID |
|---|---|
| Adobe Illustrator | Illustrator.Application.x |
| Adobe PhotoShop | Photoshop.Application.x |
| Adobe Affter Effect | Aftereffect.Application.x |
| Microsoft Internet Explorer | InternetExplorer.Application |
| Microsoft Excel | Excel.Application |
| Microsoft Access | Access.Application |
| Microsoft Outlook | Outlook.Application |
| Microsoft Word | Word.Application| |
| Windows Scripting Host | Wscript.Shell |
2008年 10月 14日ドキュメント作成
2008年 10月 18日ドキュメント更新