smlyk 发表于 2011-4-13 09:40:50

问2个关于SendMessage函数的问题

测试的代码如下:
Public Function 获取字符串(文本控件名 As TextBox, Optional ByVal 长度 As Long = 0) As String
Dim 返回长度 As Long, 字符串() As Byte
If 长度 = 0 Then
    ReDim 字符串(0)
    返回长度 = SendMessage(文本控件名.hWnd, WM_GETTEXT, -1, 字符串(0))
'    Debug.Print 返回长度
    If 返回长度 < 1 Then 获取字符串 = "": Exit Function
    长度 = 返回长度
End If
ReDim 字符串(长度 - 1)
返回长度 = SendMessage(文本控件名.hWnd, WM_GETTEXT, 长度 * 2 , 字符串(0))
'Debug.Print 返回长度
获取字符串 = StrConv(字符串, vbUnicode)
End Function
主要目的是获取一个未知字节数大小的文本框字符,可我在测试时发现了2个问题。
1、当文本框内字符过多(我复制了642K进去)时程序就会崩溃掉,但在第一次读取时设置获取字节数为65536时,能正常读取。
2、当指定长度后,无法正常读取中文字符串,比如测试字符为"I爱YOU",设置长度为2时,就不能正常的获取"爱"字。
求高手解答

蓝色的忧郁 发表于 2011-4-13 09:40:57

第二个问题你应该读取3个吧。中文占2
页: [1]
查看完整版本: 问2个关于SendMessage函数的问题