|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:
6 a* F6 d0 `: A- m- g...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long" n, M" i# M9 J+ x* C
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个04 B$ Z6 n* n! y# ?. ^) s0 R
'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))5 V5 ^+ O# W% Y$ }/ z( k4 |5 p- a
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题2 ^: B) N' @; x N2 J! z
FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是02 @" R9 P& z' r2 a9 T
LastByte(62) As long) y/ G/ c' t. m
End Type8 m$ P4 o" W7 o% `( v" G9 b
这做法纯粹是对vb的不了解造成的,可以声明为:
% V/ w6 ^$ J' A...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long
: I: [/ T3 R/ `5 J$ d9 [9 j 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)5 L0 E) c7 `& c! G
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
4 g" }9 X$ U& d/ x2 {
6 k0 v0 Y+ F2 S4 Z# [ |
|