|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:& ~: H& E5 C4 {
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long9 v+ J+ U" R' v$ Y7 g: z2 u
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0
( \0 @: {- E5 g'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))1 {& G# H0 @1 [ H# H
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题
& R! [0 L5 w( e; F5 I) E8 l4 U FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0
! e: j1 n; e: I/ S& [# N0 n LastByte(62) As long
$ g; V$ B X$ C( N% r( `$ JEnd Type( G& `# M5 u1 d3 j5 K' n: p
这做法纯粹是对vb的不了解造成的,可以声明为:
+ I; |& D/ i3 N...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long
, c. n3 C7 A* C5 f 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)- E8 a1 s1 u8 a$ U- ^) Y9 J: f
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
+ f# F! ~* Z3 h5 V- V* x
% Z2 X4 F( o9 J( N/ }# u, L9 _ |
|