|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:' B5 R& F7 }/ l! G4 a
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long
: X0 E# ^5 B$ W8 s; Z 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0
+ S, E0 v5 z4 r: n0 Q'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))+ f7 l, r: p! T9 F
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题; f6 J I6 ]# B
FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0
4 U0 C A) h) v' m* H5 ?/ X LastByte(62) As long
7 n9 v: z' {7 _, I3 kEnd Type
% c% @! N" O4 d9 S: @这做法纯粹是对vb的不了解造成的,可以声明为:1 b; o( ~' u! O$ X+ R
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long% P! \+ ?! q6 ]( m4 J( A! E
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)9 u" y' {5 i( o
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
+ Z* q N1 x; Q& E+ b3 u
% _3 A" w& d9 ~" C9 m! I7 W! q |
|