Archive for 5月 28th, 2012

  1. Hello, COM(Java) World!

    Posted on 5月 28th, 2012 by cx20

    COM(Java)

    COM(Component Object Model)はマイクロソフトの提唱するプログラム部品の仕様である。
    COM を用いて開発された部品であれば言語を問わず利用することができる。
    Java 自身には、COM を呼び出す機能を持っていないが、別途ライブラリを経由することで呼び出すことが可能である。
    以下は Java より JACOB(JAVA-COM Bridge) ライブラリを使用した COM クライアントの例となっている。

    ソースコード

    import com.jacob.com.Variant;
    import com.jacob.activeX.ActiveXComponent;
     
    public class Hello {
        public static void main(String[] args) {
            ActiveXComponent shell = new ActiveXComponent("Shell.Application"); 
            Variant hwnd = new Variant(0);
            Variant title = new Variant("Hello, COM(JACOB) World!");
            Variant option = new Variant(0);
            Variant rootFolder = new Variant(36);
            Variant[] params= new Variant[] { hwnd, title, option, rootFolder };
            Object folder = shell.invoke( "BrowseForFolder", params );
        }
    }

    コンパイル&実行方法

    C:¥> javac -cp "jacob.jar;." Hello.java
    C:¥> java -cp "jacob.jar;." Hello

    実行結果

    +----------------------------------------+
    |Browse For Folder                    [X]|
    +----------------------------------------+
    | Hello, COM(JACOB) Wolrd!               |
    |                                        |
    | +------------------------------------+ |
    | |[Windows]                           | |
    | | +[addins]                          | |
    | | +[AppCompat]                       | |
    | | +[AppPatch]                        | |
    | | +[assembly]                        | |
    | |     :                              | |
    | |     :                              | |
    | |     :                              | |
    | +------------------------------------+ |
    | [Make New Folder]    [  OK  ] [Cancel] |
    +----------------------------------------+