Jeans & Development:2005年 12月の記事

CreateThread [プログラミング]

2005年12月26日

 APIを使っての新規スレッド作成について、参考になりそうなページ。

参考1 参考2 参考3 参考4

C++で作るCOMサーバ [プログラミング]

2005年12月20日

 .NET を用いればregasm.exeでCOMサーバを簡単に登録することが出来るのだが、やはり.NETは重い。加えて、.NET Framework がインストールされていないコンピュータの割合はそれほど低くないと思われる。
 他方で、簡単な構造のCOMサーバなら、C++を用いてWin32プログラムとして製作すればよい。この場合、動作は軽いし汎用性もある。ただし、複雑なプログラムを組むのはやはり骨が折れるのだが…。
 今回C++を用いたCOMサーバを製作することになったので、その方法をここにまとめておくことにした。

VS 2005 Express Edition [プログラミング]

2005年12月18日

 『ついにVisual Studio(VS)の一部無償提供が始まった』との情報に従って(知らなかった!)、Microsoft のページからダウンロードしてインストールしてみた。ダウンロードは1年間限定(2006年11月まで)であるが、この期間中にダウンロードをすませれば、期間が過ぎても使えるようである。
 Microsoftのプログラミングツールの入手は、1998年頃のVB5以来であるが、やはり使いやすい。ついでに.NET Framework ver2.0も入っているみたいなので、新しい機能も試せるかも知れない。

vbscriptでマシン語を使う [プログラミング]

2005年12月18日

 前の記事『VB.NETでマシン語を使う3』を書いていて思ったのだが、これは要するにvbscriptからマシン語を呼び出していることだということに気が付いた。ならばいっそのこと、vbscriptからマシン語を呼び出すためのCOMオブジェクトを用意しておけば、将来的にもしかしたら有用になるかも(?)しれない。で、作ってみた。

VB.NETでマシン語を使う3 [プログラミング]

2005年12月16日

 VB.NET版DynaCallが完成した。次のようなvbscriptのコードで、MessageBoxAが呼び出せる。

set dc=CreateObject("dwtools.NET.dynacall")
dc.Push 1
dc.Push dc.AnsiString("テスト")
dc.Push dc.AnsiString("DynaCall.NET")
dc.Push 0
call dc.CallAPI("user32","MessageBoxA")

実行結果は、前の記事と同じで以下の通り。
DynaCall.NET

VB.NETでマシン語を使う2 [プログラミング]

2005年12月14日

 VB.NETによるDynaCallの原型になるテストプログラムが完成した。テストでは、MessageBoxAを呼び出すことに成功している。

VB.NETでマシン語を使う [プログラミング]

2005年12月14日

 現在のSFCは、Win32APIの殆どをVB.NET内で宣言する形になっている。これは、DynaWrapから脱却するための一つの方法であったのだが、逆にWin32API以外の関数をDLLから呼び出して実行することは出来ない(DynaWrapなら可能)。
 そこで、やはり最終的にはDynaCall様の物をVB.NET内に構築して実行する形にしたいと思っている。これには、DynaCallの様なインラインアセンブラが必要である。
 前に一度述べたようにこちらのページではインラインマシン語の使い方を紹介している。ただし、ver 2.0の.NET frameworkが必要で、これはまだβバージョンである。正式なver 2.0の登場が待てないので、別の形でインラインマシン語を利用する方法を考えてみた。

VC及びVBで一般的なコントロール [プログラミング]

2005年12月12日

 将来的にSFCにインクルード出来るようにするコントロールの参考に。

WSHでWin32APIを呼び出す-その16 [プログラミング]

2005年12月10日

参考:SFC mini
(←戻る)

 Windowsフォームを用いた次のようなHello WorldプログラムがSFCで作成できるようになった。

option explicit
Dim SFC
Set SFC = CreateObject("dwtools.NET.SFC")
Execute SFC.Initialize
Execute SFC.Include("<WinForm>")

Dim Form1
Set Form1=new WinForm
call Form1.AddControl(0,"STATIC","List1", _
                 WS_CHILD+WS_VISIBLE+SS_CENTER, _
                 100,50,300,30, 0)
call Form1.AddControl(0,"BUTTON","Command1", _
                 WS_CHILD+WS_VISIBLE+BS_PUSHBUTTON, _
                 100,100,300,30, "Command1_click")
Form1.Init
Form1.Show
wscript.quit(Form1.MsgLoop)

Sub Command1_click(hwnd,message,wparam,lparam)
  msgbox "Hello World!"
End Sub

今回の目玉としては、"Command1_click"という文字列を与えるだけで簡単にボタンのクリックイベントを登録できるところ。

実行画面
Hello World!

(追記)
このシリーズは、この記事をもって終了します。ここまで述べた一連のこととほとんど同じことは、SFC mini を用いれば行うことが出来ます。
<<前の記事