コンピューターのことなどを綴ったメモ (旧:目から鱗 w/SQLite)
| Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
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日
WSHでWin32APIを呼び出す-その13 [プログラミング]
2005年10月26日
前の記事で、Malloc周りを変えたいと書いたが、その為のプログラムの変更を行っていてあることに気が付いた。ver 0.1.2.2 では、ユーザ定義型の変数用のメモリを確保するため、dwtools.dll のソースコードの冒頭部分で次のように記述している。
#include <windows.h>
unsigned short mBuff[65536]={0xFFFF};
int lastMBuff=65536;このままだと、このmBuff[65536]の部分がdllファイルに含まれてしまうため、dll が無駄に大きくなってしまう。つまり、128kb の部分に延々と0xFFが書かれたようなdllファイルが出来てしまうわけだ。