コンピューターのことなどを綴ったメモ (旧:目から鱗 w/SQLite)
| Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
WSHでWin32APIを呼び出す-その16 [プログラミング]
2005年12月10日
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"という文字列を与えるだけで簡単にボタンのクリックイベントを登録できるところ。
実行画面

(追記)
このシリーズは、この記事をもって終了します。ここまで述べた一連のこととほとんど同じことは、SFC mini を用いれば行うことが出来ます。
WSHでWin32APIを呼び出す-その15 [プログラミング]
2005年12月9日
SFCの完成形がようやく見えてきた。番外編で述べた、複数のファイルに分かれていたツールの本体を一つのDLLにまとめることも終えたし、EnumWindows等のコールバック関数を扱うAPIも使用可能になった。また、ボタンやリストコントロールなども表示できることを確認した。現在の所、このような簡単なコード
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","リストコントロール", _
WS_CHILD+WS_VISIBLE+SS_CENTER, _
100,50,300,30, 1)
call Form1.AddControl(0,"BUTTON","ボタンコントロール", _
WS_CHILD+WS_VISIBLE+BS_PUSHBUTTON, _
100,100,300,30, 2)
Form1.Init
Form1.Show
wscript.quit(Form1.MsgLoop)で、次のようなウインドウが表示できる。

また、SFCの説明ページも完成した。
(続く)
WSHでWin32APIを呼び出す-番外編 [プログラミング]
2005年11月27日
VB.NETで関数ポインタの値を取得する2 [プログラミング]
2005年11月25日
VB.NETで関数ポインタの値を取得する [プログラミング]
2005年11月21日
WSHでWin32APIを呼び出す-その14 [プログラミング]
2005年11月19日
いままでWin32APIの呼び出しに、DynaWrapを用いていた。DynaWrapの再配布の条件などを知るために色々な方に質問してみたが、このツールのライセンスがどうなっているかよく分からない。制作者の方とも連絡が付かないそうである。DynaWrapを改変した物をWeb上に見かけるが、以上の理由からそういった改変や再配布が合法的なのかどうかよく分からない状況である。
そこで、DynaWrapから脱却することにした。Win32APIを呼び出す方法としては他に、VBなどでActiveXを作り、それを経由して行う方法が一般的なので、それをここでも用いることにした。
vbscript を書く度にActiveXをコンパイルし直すのではSFCをツールとして制作している意味がないので、殆ど全てのWin32APIを含むActiveXをVB.NETを用いて作成することにした。出来たDLLのサイズは約500kbで、実用の範囲内に収まった。SFC自体の使用方法は以前と殆ど変わらず、上手くアップグレードできたと思う。この時点での最新バージョンは、ver 0.3.0.2(.NET frameworkが必要)。ちなみに、DynaWrapを用いたものの最終バージョンは、ver 0.2.0 であり、こちらはDynaWrapが要る代りに.NETは必要ない。
(SFC ver 0.3.0.2 はこちらから)
(SFC ver 0.2.0 はこちらから)
2005-12-08追記
ver 0.3.0.2 は初期バージョンで、文字列の操作に不具合在り。 ver 0.3.1で修正されている。あと、ver 0.3.1は、ヘルプファイルも梱包。
(SFC ver 0.3.1 はこちらから)
(続く)
スキンを変更するプラグインのひな形 [Nucleus]
2005年10月27日