Archive for the ‘JScript.NET’ Category

  1. Hello, Connector/NET(JScript.NET) World!

    Posted on 4月 4th, 2013 by cx20

    Connector/NET(JScript.NET)

    Connector/NET は、.NET ベースの MySQL 接続用 API である。
    以下は JScript.NET による Connector/NET ライブラリを使用した MySQL への接続例となっている。

    ソースコード(JScript.NET + Connector/NET + MySQL)

    import System;
    import System.Data;
    import System.Drawing;
    import MySql.Data.MySqlClient;
     
    main();
     
    function main() {
        var conStr = "server=localhost;user id=root;password=P@ssW0rd";
        var sqlStr = "SELECT 'Hello, Connector/NET World!' AS Message";
     
        var con = new MySqlConnection(conStr);
        var cmd = new MySqlCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    コンパイル方法

    C:¥> jsc /r:MySql.Data.dll Hello.js

    実行結果

    MESSAGE
    ---------------------
    Hello, Connector/NET World!
  2. Hello, Win32 API(JScript.NET) World!

    Posted on 3月 7th, 2013 by cx20

    Win32 API(JScript.NET)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は JScript.NET による Win32 API 呼出しの例となっている。

    ソースコード

    import System;
    import System.Reflection;
    import System.Reflection.Emit;
    import System.Runtime;
    import System.Text;
     
    // Invoke a Win32 P/Invoke call.
    // http://www.leeholmes.com/blog/2006/07/21/get-the-owner-of-a-process-in-powershell-%e2%80%93-pinvoke-and-refout-parameters
    function InvokeWin32(dllName:String, returnType:Type,
      methodName:String, parameterTypes:Type[], parameters:Object[])
    {
      // Begin to build the dynamic assembly
      var domain = AppDomain.CurrentDomain;
      var name = new System.Reflection.AssemblyName('PInvokeAssembly');
      var assembly = domain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
      var module = assembly.DefineDynamicModule('PInvokeModule');
      var type = module.DefineType('PInvokeType',TypeAttributes.Public + TypeAttributes.BeforeFieldInit);
     
      // Define the actual P/Invoke method
      var method = type.DefineMethod(methodName, MethodAttributes.Public + MethodAttributes.HideBySig + MethodAttributes.Static + MethodAttributes.PinvokeImpl, returnType, parameterTypes);
     
      // Apply the P/Invoke constructor
      var ctor = System.Runtime.InteropServices.DllImportAttribute.GetConstructor([Type.GetType("System.String")]);
      var attr = new System.Reflection.Emit.CustomAttributeBuilder(ctor, [dllName]);
      method.SetCustomAttribute(attr);
     
      // Create the temporary type, and invoke the method.
      var realType = type.CreateType();
      return realType.InvokeMember(methodName, BindingFlags.Public + BindingFlags.Static + BindingFlags.InvokeMethod, null, null, parameters);
    }
     
    function MessageBox(hWnd:Int32, lpText:String, lpCaption:String, uType:Int32) 
    { 
       var parameterTypes:Type[] = [Type.GetType("System.Int32"),Type.GetType("System.String"),Type.GetType("System.String"),Type.GetType("System.Int32")];
       var parameters:Object[] = [hWnd, lpText, lpCaption, uType];
     
       return InvokeWin32("user32.dll", Type.GetType("System.Int32"), "MessageBoxA", parameterTypes,  parameters );
    } 
     
    MessageBox( 0, "Hello, Win32 API World!", "Hello, World!", 0 );

    コンパイル方法

    C:¥> jsc Hello.js

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  3. Hello, ODP.NET(JScript.NET) World!

    Posted on 9月 7th, 2012 by cx20

    ODP.NET(JScript.NET)

    ODP.NET(Oracle Data Provider for .NET)は、.NET ベースの Oracle Database 接続用 API である。ODAC(Oracle Data Access Component)と呼ばれるパッケージに含まれる。
    .NET 環境での Oracle Database 用データプロバイダとしては、マイクロソフト社が提供する「Microsoft Oracle Client」とオラクル社が提供する「ODP.NET」があるが、現在、「Microsoft Oracle Client」はマイクロソフト社自身が非推奨としており、今後は ODP.NET の使用が推奨されている。

    データプロバイダ 説明
    System.Data.OracleClient .NET Framework Data Provider for Oracle
    Oracle.DataAccess.Client Oracle Data Provider for .NET

    ソースコード(JScript.NET + ODP.NET + Oracle)

    import System;
    import System.Data;
    import System.Drawing;
    import Oracle.DataAccess.Client;
     
    main();
     
    function main() {
        var conStr = "Data Source=ORCL;User ID=scott;Password=tiger;";
        var sqlStr = "SELECT 'Hello, ODP.NET World!' AS Message FROM DUAL";
     
        var con = new OracleConnection(conStr);
        var cmd = new OracleCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    コンパイル方法

    C:¥> jsc /r:<ORA_HOME>odp.netbin2.xOracle.DataAccess.dll Hello.js

    実行結果

    MESSAGE
    ---------------------
    Hello, ODP.NET World!
  4. Hello, ADO.NET(JScript.NET) World!

    Posted on 9月 6th, 2012 by cx20

    ADO.NET(JScript.NET)

    ADO.NET(ActiveX Data Objects .NET)は、ADO の後継で .NET ベースの DBMS 接続用 API である。
    .NET データプロバイダを介することで様々な DBMS への接続が可能となっている。
    .NET Framework 標準で使用できる .NET データプロバイダとしては、以下のようなプロバイダがある。

    データプロバイダ名 説明
    System.Data.SqlClient Microsoft SQL Server
    System.Data.OleDb OLE DB
    System.Data.Odbc ODBC
    System.Data.OracleClient Oracle

    ソースコード(JScript.NET + ADO.NET + OLE DB + Jet データベース)

    import System;
    import System.Data.OleDb;
     
    main();
     
    function main() {
        var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
            + "Data Source=.\hello.mdb;"
        var sqlStr = "SELECT 'Hello, ADO.NET World!' AS Message";
     
        var con = new OleDbConnection(conStr);
        var cmd = new OleDbCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    ソースコード(JScript.NET + ADO.NET + OLE DB + ACE データベース)

    import System;
    import System.Data.OleDb;
     
    main();
     
    function main() {
        var conStr = "Provider=Microsoft.ACE.OLEDB.12.0;"
            + "Data Source=.\hello.accdb;"
        var sqlStr = "SELECT 'Hello, ADO.NET World!' AS Message";
     
        var con = new OleDbConnection(conStr);
        var cmd = new OleDbCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    ソースコード(JScript.NET + ADO.NET + SQL Server)

    import System;
    import System.Data.SqlClient;
     
    main();
     
    function main() {
        var conStr = "SERVER=(local);"
            + "DATABASE=master;"
            + "UID=sa;"
            + "PWD=P@ssW0rd";
        var sqlStr = "SELECT 'Hello, ADO.NET World!' AS Message";
     
        var con = new SqlConnection(conStr);
        var cmd = new SqlCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    ソースコード(JScript.NET + ADO.NET + Oracle)

    import System;
    import System.Data.OracleClient;
     
    main();
     
    function main() {
        var conStr = "Data Source=ORCL;User ID=scott;Password=tiger;";
        var sqlStr = "SELECT 'Hello, ADO.NET World!' AS Message FROM DUAL";
     
        var con = new OracleConnection(conStr);
        var cmd = new OracleCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    ソースコード(JScript.NET + ADO.NET + ODBC + MySQL)

    import System;
    import System.Data;
    import System.Data.Odbc;
     
    main();
     
    function main() {
        var conStr = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd";
        var sqlStr = "SELECT 'Hello, ADO.NET World!' AS Message";
     
        var con = new OdbcConnection(conStr);
        var cmd = new OdbcCommand(sqlStr, con);
        con.Open();
        var reader = cmd.ExecuteReader();
        while( reader.Read() )
        {
            Console.WriteLine( reader.GetName(0) );
            Console.WriteLine( "---------------------" );
            Console.WriteLine( reader[0] );
        }
        reader.Close();
        con.Close();
    }

    コンパイル方法(32bit OLE DB 使用時)

    C:¥> jsc /platform:x86 Hello.js

    コンパイル方法(上記以外)

    C:¥> jsc Hello.js

    実行結果

    Message
    ---------------------
    Hello, ADO.NET World!
  5. Hello, Windows Forms(JScript.NET) World!

    Posted on 6月 4th, 2012 by cx20

    Windows Forms(JScript.NET)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は JScript.NET における Windows フォーム の例となっている。

    ソースコード

    import System;
    import System.Drawing;
    import System.Windows.Forms;
    import Accessibility;
     
    main();
     
    class HelloForm extends Form
    {
        function HelloForm()
        {
            this.Size = new System.Drawing.Size( 640, 480 );
            this.Text = "Hello, World!";
            var label1 = new Label;
            label1.Size = new System.Drawing.Size( 320, 20 );
            label1.Text = "Hello, Windows Forms(JScript.NET) World!";
            this.Controls.Add( label1 );
        }
    }
     
    function main() {
        var form = new HelloForm;
        Application.Run(form);
    }

    コンパイル方法

    C:¥> jsc /target:winexe Hello.js

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(JScript.NET) World!  |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, COM(JScript.NET) World!

    Posted on 5月 20th, 2012 by cx20

    COM(JScript.NET)

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

    ソースコード

    import System;
    import System.Runtime.InteropServices;
     
    var ssfWINDOWS = 36
     
    main();
     
    function main() {
        var shell = new ActiveXObject("Shell.Application");
        var folder = shell.BrowseForFolder( 0, "Hello, COM(JScript.NET) World!", 0, ssfWINDOWS );
        if ( folder != null )
        {
            Marshal.ReleaseComObject( folder );
        }
        Marshal.ReleaseComObject( shell );
    }

    コンパイル方法

    C:¥> jsc hello.js

    実行結果

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

    Posted on 12月 26th, 2011 by cx20

    JScript.NET

    JScript.NET は JScript の .NET Framework 向け実装である。
    JavaScript の構文が使える他、.NET Framework のライブラリが利用できる。
    スクリプトと名前がついているが、コンパイルが必要。

    ソースコード

    print("Hello, JScript.NET World!");

    ソースコード(.NET ライブラリを使用した場合)

    import System; 
    Console.WriteLine("Hello, JScript.NET World!");

    コンパイル&実行方法

    C:¥> jsc hello.js
    C:¥> hello
    

    実行結果

    Hello, JScript.NET World!