|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:1 J! m8 h0 p! w4 O! s: S
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long: d9 K% u( t, D0 y2 Q3 Y
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0, J8 x5 _6 _9 ^4 A. O
'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))' v& T3 J, L {- f5 o0 |9 C
Private Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题
% x/ _% l+ Z0 a* D1 E# r FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0% G! C2 I* j0 B. z! \/ T
LastByte(62) As long: X# v: b* ?1 F) P2 [) t9 q$ R
End Type
/ ?9 X' K+ ?: l4 K- {这做法纯粹是对vb的不了解造成的,可以声明为:3 t% \4 s% b# m; j9 p
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long( @! r8 F, o, N$ d' t0 {
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了)
2 a6 T9 ]: R. g$ _+ D- m这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
1 o* c4 {" m, q) E9 L( n. b! M' v$ t7 m
|
|