|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:% b! p$ ^: C. H/ |6 v# w7 w
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long
) r% s1 L; `; w* E, @& }3 P& e( V7 [( U 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个08 I% [( \7 O* h* {4 k$ e6 q* o8 F0 K
'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))" E) T) H' y( F4 G
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题" w ~9 `8 k7 M) z% W, s7 I8 k
FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是09 T/ A; }* b* b3 `1 A0 M
LastByte(62) As long
6 ^+ |4 w' ?! n$ a: p) ?End Type: J) q `1 s! X% f7 d+ u: Q6 G
这做法纯粹是对vb的不了解造成的,可以声明为:- O. q# Z+ D) N A3 V9 Z
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long
4 k- f( j4 w9 o* V 'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)
5 a5 k* T) X$ X2 ^5 t' t% v这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改( o+ l, l. l4 ?/ E: F* t
: J" k; _2 T4 |4 l) h$ U6 e( D: B- ?
|
|