.NETとネイティブ混在を実現するCOMDLL
- 2014.08.26 Tuesday
- 00:36
ディスパッチ->拡張ディスパッチという流れの反省点を踏まえてITypeを基本としたディスパッチ改良型の
集積です。
CLR環境C++(いわゆる混在モード)では.NETから呼び出せるネイティブコードを書けますが、案の定その情報は逆コンパイル可能なようです。つまり、エキスパートが自身の思考過程を隠したい場合にはこれを仲介した、ネイティブなDLLを書く必要があります。そこで、常に.NET<->仲介<->ネイティブだとコード量が増えます。管理しにくいものになるでしょう。JScript.NETとVB.NETはディスパッチを認識しますので、最初のインスタンス生成時のみ仲介を行い、あとは直接.NET<->ネイティブを実現することができます。言い方を変えれば、サイドバイサイドのCreateObjectに代わる動作を仲介DLLにさせるわけです。
- -
- comments(0)
- -
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());
- -
- comments(0)
- -
一旦全データ削除しました。
- 2014.08.19 Tuesday
- 11:48
SEO的にだめだめなので
プライベートサイト http://www5a.biglobe.ne.jp/~javajava/
ツイッター https://twitter.com/CRosenkreuzer
が現状での主力になります。
- -
- comments(0)
- -