|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:( a! [- ], f8 X4 s
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long/ W3 w# @0 f1 L/ [9 H% [0 j
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0# G5 B2 `/ _4 W
'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))4 C: U: r0 |! \. {" L5 \; n+ Q
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题1 S4 y7 G; d! R7 [
FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0( F0 H0 {; N7 A$ }( L
LastByte(62) As long
$ }( d [8 e4 q3 [# `6 @* pEnd Type3 I- h! ]1 g4 f* m( }
这做法纯粹是对vb的不了解造成的,可以声明为:8 |6 T) x6 |3 l* b
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long# z1 |# ^- `- G: p
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)
4 [. I2 u7 A: ^3 A. f w这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改9 K( y0 J( L5 m2 ^$ V
( @; B+ [9 F( B c. i4 z. A |
|