スポンサーサイト

  • 2014.08.26 Tuesday

一定期間更新がないため広告を表示しています

  • 0
    • -
    • -
    • -

    .NETとネイティブ混在を実現するCOMDLL

    • 2014.08.26 Tuesday
    • 00:36
    分かりやすいように、どうしてもこういう表題にしてしまいますが、.NETは広義なCOMテクニックです。
    ディスパッチ->拡張ディスパッチという流れの反省点を踏まえてITypeを基本としたディスパッチ改良型の
    集積です。

    CLR環境C++(いわゆる混在モード)では.NETから呼び出せるネイティブコードを書けますが、案の定その情報は逆コンパイル可能なようです。つまり、エキスパートが自身の思考過程を隠したい場合にはこれを仲介した、ネイティブなDLLを書く必要があります。そこで、常に.NET<->仲介<->ネイティブだとコード量が増えます。管理しにくいものになるでしょう。JScript.NETとVB.NETはディスパッチを認識しますので、最初のインスタンス生成時のみ仲介を行い、あとは直接.NET<->ネイティブを実現することができます。言い方を変えれば、サイドバイサイドのCreateObjectに代わる動作を仲介DLLにさせるわけです。

    サンプルダウンロード

    • 2014.08.25 Monday
    • 23:32
    サンプルダウンロード

    WebBrowserのHTA化による.NET環境用HTMLアプリケーション

    • 2014.08.25 Monday
    • 23:04

    表題の環境をまもなく公開します。
    動作環境は.NET2.0以上でUtil.dll、WebEx.dllが実行EXEから参照可能なことです。
    サンプルソース(JScript.NET)

    //==============================================================================
    //WebBrowserのHTA化による.NET環境HTMLアプリケーション環境
    //==============================================================================
    import System
    import System.IO

    import System.Drawing
    import System.Windows.Forms
    import Util          //C++ Util

    import Accessibility //.NET2.0必須

    var MAIN_HWND;

    var DEF_SIZE = WIN.DefWindowSize();

    var WebEx = COM.GetBrowserEx();

    WebEx.SiteHook();      //WebBrowserのClientSiteフック
    WebEx.External(this);  //window.externalへ本スクリプトthisを設定
    WebEx.HtaMode(true);   //WebBrowserセキュリティーをHTA等価へ


    //HTMLからの呼び出し用MessageBox
    function MsgBox(str)
    {
        System.Windows.Forms.MessageBox.Show(str);
    }

    //HTMLからの呼び出し用OpenFileDialog
    function OpenFile()
    {
        var fod = new OpenFileDialog();
        if(fod.ShowDialog(MAIN_HWND) == DialogResult.OK) return(fod.FileName);
        else return("");
    }
    //MainWindowクラス
    public class Form1 extends System.Windows.Forms.Form
    {
     var Browser;
     public function Form1()
     {
      MAIN_HWND = Control.Handle;
      this.Size = new System.Drawing.Size(DEF_SIZE[0], DEF_SIZE[1]);

      Browser = new WebBrowser();
      Browser.Dock = DockStyle.Fill;
      this.Controls.Add(Browser);
      
      this.Name = this.Text = "HTML Application";
      Browser.Navigate(Directory.GetCurrentDirectory() + "¥¥page1.htm");
     }
    }
    System.Windows.Forms.Application.Run(new Form1());





     

    一旦全データ削除しました。

    • 2014.08.19 Tuesday
    • 11:48
    お洗濯みたいなもんです。
    SEO的にだめだめなので
    プライベートサイト http://www5a.biglobe.ne.jp/~javajava/
    ツイッター https://twitter.com/CRosenkreuzer
    が現状での主力になります。

    PR

    calendar

    S M T W T F S
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
    << June 2017 >>

    mobile

    qrcode

    powered

    無料ブログ作成サービス JUGEM