|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:3 ~9 ?9 @8 ^' {" _; x( |/ {) c& O
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long
2 p0 R* v1 E0 { 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0
( s" x) n2 ?$ x; l0 e' x( a'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))) o, ~6 b! |2 Y
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题
* D2 B" p. Q, M& l8 S FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是05 j Y. H, {' r, [! Z. @$ N% @
LastByte(62) As long) Q, w" S' f' G$ I7 d$ w$ w; E5 K
End Type& }' j: x" A+ W$ ^6 `1 S2 p
这做法纯粹是对vb的不了解造成的,可以声明为:
, |' B/ B. A8 T" e...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long' v/ }+ F: f; r, d7 ~
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)7 S0 P( e% ?3 t& [9 \0 l
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
X, r+ p6 s# ^* k. X# \8 O7 y- x/ _7 Z7 o. ?% ^9 F& r& }. f+ l
|
|