这是以前找的一个例子,是用于textbox的,不过同样适用于richtextbox
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINE = &HC4
Private Const EM_LINELENGTH = &HC1
Private Const EM_LINEINDEX = &HBBPrivate Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)Private Sub TB_GetLine(ByVal hWnd As Long, ByVal whichLine As Long, Line As String)
  Dim length As Long, bArr() As Byte, bArr2() As Byte, lc As Long  lc = SendMessage(hWnd, EM_LINEINDEX, whichLine, ByVal 0&)
  length = SendMessage(hWnd, EM_LINELENGTH, lc, ByVal 0&)
  If length > 0 Then
    ReDim bArr(length + 1) As Byte, bArr2(length - 1) As Byte
    Call RtlMoveMemory(bArr(0), length, 2)
    Call SendMessage(hWnd, EM_GETLINE, whichLine, bArr(0))
    Call RtlMoveMemory(bArr2(0), bArr(0), length)
    Line = StrConv(bArr2, vbUnicode)
  Else
    Line = ""
  End If
End SubPrivate Sub Command1_Click()
  Dim S As String
  Call TB_GetLine(RichTextBox1.hWnd, 5, S)
  Text2 = S
End Sub'假设要读取 RichTextBox1 第 5 行的资料
'Dim S As String
'Call TB_GetLine(RichTextBox1.hWnd, 5, S)
'传回值 S 即等于到 5 行的资料
'注:RichTextBox1 的行次是从 0 起算。