|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:4 l; V; @: Q6 _! L
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long
8 E" f0 r. D0 e. j8 V, U; w 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0
3 k5 @1 E$ m1 W'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))
3 i* q4 a, j9 z5 M- J2 OPrivate Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题& h6 B6 ]4 j4 [5 e/ r) t1 e y' ~4 T
FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0, F7 s0 k7 S/ x( \0 f/ u+ P% b
LastByte(62) As long5 A; b5 c) ]- U% b7 q, z
End Type
. e0 V. o; k$ K9 h6 Y3 g+ E这做法纯粹是对vb的不了解造成的,可以声明为:
" q9 B0 ]. ~: k: h...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long9 f4 B/ e W/ B/ Y" l
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)9 u7 G8 ?9 l' ?* \) z) w2 \
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改5 D, I% L8 R+ H+ ^0 p' d p% m0 x
4 Z5 z$ Z2 N, ~. }$ o; o
|
|