我这里没有VB,只能凭印象写Dim B As Byte CopyMemory VarPtr(B), SendMessage(hwnd,WM_Command,index,211), 1
lstrcpy lstrlendim lp as long ,llen as long ,s as string lp=SendMessage(hwnd,WM_Command,index,byval 211) llen=lstrlen(lp) s=string(llen," ") lstrcpy byval s,byval lp
To supergreenbean(超级绿豆) : 你的方法我试了,但发现它是直接把取得的地址转换成字符串: 如我取得的lp=4283567 结果s="4283567"原来语句的说明 ** char *name=SendMessage(hwnd,WM_COMMAND,index,211); ** gets the filename of the filelist entry [index]. ** returns a pointer to it. returns NULL on error. 我想应该返回的是一个字串地址吧?To:pigpag(噼里啪啦 - 爽死了!) 你的方法我也试了,也不行。因为事先不知返回的字串长度(语句说明里没写) 所以上面这句是C的格式,不知能否转换成VB的安全形式?
我现在没法调试,试试这样Dim B() As Byte, Ptr As Long, length As Long Ptr = SendMessage(hwnd,WM_Command,index,byval 211) length = lstrlen(ByVal Ptr) Redim B(Ptr) CopyMemory VarPtr(B(0)), SendMessage(hwnd,WM_Command,index,211), 1 MsgBox StrConv(B, vbUnicode)不过问题应该出在lstrlen(ByVal Ptr)这里,按理说lstrlen()函数声明的时候就应该是byVal的。建议改一下。
If length>0 Then Redim B(length - 1) '上面Redim B(Ptr)写错了,改成此句试试看吧
CopyMemory VarPtr(B), SendMessage(hwnd,WM_Command,index,211), 1
lstrlendim lp as long ,llen as long ,s as string
lp=SendMessage(hwnd,WM_Command,index,byval 211)
llen=lstrlen(lp)
s=string(llen," ")
lstrcpy byval s,byval lp
你的方法我试了,但发现它是直接把取得的地址转换成字符串:
如我取得的lp=4283567
结果s="4283567"原来语句的说明
** char *name=SendMessage(hwnd,WM_COMMAND,index,211);
** gets the filename of the filelist entry [index].
** returns a pointer to it. returns NULL on error.
我想应该返回的是一个字串地址吧?To:pigpag(噼里啪啦 - 爽死了!)
你的方法我也试了,也不行。因为事先不知返回的字串长度(语句说明里没写)
所以上面这句是C的格式,不知能否转换成VB的安全形式?
Ptr = SendMessage(hwnd,WM_Command,index,byval 211)
length = lstrlen(ByVal Ptr)
Redim B(Ptr)
CopyMemory VarPtr(B(0)), SendMessage(hwnd,WM_Command,index,211), 1
MsgBox StrConv(B, vbUnicode)不过问题应该出在lstrlen(ByVal Ptr)这里,按理说lstrlen()函数声明的时候就应该是byVal的。建议改一下。
SENDMESSAGE(TEXT.HWND,WM_SETTEXT,255,str_addres)
然后就可以得到字符了~~~我这几天正好用过这个办法~~~可以的哈~~~呵呵