Archive for 2月 8th, 2013

  1. Hello, COM(Boo) World!

    Posted on 2月 8th, 2013 by cx20

    COM(Boo)

    COM(Component Object Model)はマイクロソフトの提唱するプログラム部品の仕様である。
    COM を用いて開発された部品であれば言語を問わず利用することができる。
    以下は Boo による COM クライアントの例となっている。

    ソースコード(実行時バインディング)

    import System
    import System.Reflection
    import System.Runtime.InteropServices
     
    [STAThread]
    def Main(argv as (string)):
        objType = Type.GetTypeFromProgID("Shell.Application") 
        shell = Activator.CreateInstance(objType)
        param as (object) = ( 0, "Hello, COM(Boo) World!", 0, 36 )
        folder = shell.GetType().InvokeMember( "BrowseForFolder", BindingFlags.InvokeMethod, null, shell, param )
        if (folder != null):
            Marshal.ReleaseComObject(folder)
        Marshal.ReleaseComObject(shell)

    コンパイル方法(実行時バインディング)

    C:¥> booc Hello.boo

    実行結果

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