|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:# t; b9 o+ Q0 f! t: Y! v" w+ S
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long
! H, B2 x7 z' D! h4 j" e 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0
0 d, [/ A# Y; a3 r1 l6 x' g'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))
/ w9 g4 w; X( ~Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题
0 l; m: X* h. q* g$ V0 x6 _# ^ FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0
8 k7 j0 ^/ p- t! _, z LastByte(62) As long+ q2 y9 O7 Z9 V! H) o( G% t
End Type! [! [8 N* m/ \- {
这做法纯粹是对vb的不了解造成的,可以声明为:
. c! b( k$ r& A2 t, V! r) c9 _...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long
) R" m9 t' H- M2 N Y 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)$ p7 d$ S c: t4 T( `6 _% |
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改9 U0 ^& Y. e4 _* y- h. o
! }0 n3 W0 C! a" k, h! T |
|