lihonggen0你好:
   我做一个程序是用于自动复制阿里旺旺聊天窗体的内容(是指实时显示聊天文字的那个窗体,不是文字输入框),我已经获得该聊天显示控件RichEdit20A的句柄,可是接下去写sendmessage()函数发消息EM_GETTEXTEX消息到那个RichEdit20A时,不明白sendmessage()函数在发送EM_GETTEXTEX消息时,wParam和lParam两个参数是代表什么意思?虽然看了很多资料还有愚钝不是很明白,查了google,baidu都查不到详细的说明和实例,那是相当郁闷,所以想求教下您,谢谢了! 
  还有网上找了很多资料,不过都是c或者c++的资料,里面有GETTEXTEX对象。在vb中怎么样才能用这个对象,要重新用一个结构体定义这个对象,还是引用哪个dll就OK,就可以正常使用GETTEXTEX这个对象呢?还有GETTEXTEX里面成员(cb、flags、codepage、lpDefaultChar、lpUsedDefChar)的值在sendmessage()函数发送EM_GETTEXTEX消息时各是什么意思?以下是网上找到的C++的代码: 
  TCHAR buf[200]; 
  GETTEXTEX gt; 
  gt.cb=200; 
  gt.flags=GT_DEFAULT; 
  gt.codepage=CP_ACP; 
  gt.lpDefaultChar=NULL; 
  gt.lpUsedDefChar=NULL; 
  SendMessage(hEdit,EM_GETTEXTEX,(WPARAM)&gt,(LPARAM)buf); 
  红色标记的地方我就是看不懂什么意思?假设已知RichEdit20A句柄,程序复制RichEdit20A中的内容在vb中语句应该是怎么样的写法,最好能有实例,写出语句给我看下,谢谢了,希望你知道话能帮下忙! 

解决方案 »

  1.   

    Private Type GETEXTEX
        cb  As Long
        flags As Long
        codepage As Long
        lpDefaultChar As Long
        lpUsedDefChar As Long
    End TypePrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Declare Function GetLastError Lib "kernel32" () As Long
    Private Sub Command1_Click()
       Dim buf As String
      Dim gt As GETEXTEX
       buf = Space(240)
       
      RichTextBox1.Text = "测试数据总共二十四个字节"
      gt.cb = 24
      gt.flags = 0
      gt.codepage = 1200
      gt.lpDefaultChar = 0
      gt.lpUsedDefChar = 0   Call SendMessage(ByVal RichTextBox1.hwnd, ByVal 1118&, ByVal VarPtr(gt), ByVal StrPtr(buf))
      MsgBox GetLastError
       
      MsgBox buf
    End Sub
      

  2.   

    Call SendMessage(ByVal RichTextBox1.hwnd, ByVal 1118&, ByVal VarPtr(gt), ByVal StrPtr(buf))
    很感谢你帮助,能说明下上面一句中红色标记的地方是什么意思吗,1118&,我运行了上面代码,剪切板没有复制的内容,感觉这样的效果和buf=RichTextBox1.Text,然后msgbox buf是一样的。因为我复制内容后,还要粘贴到另一个程序的RichEdit20A的输入框中,所以剪切板要有复制的内容,或者不采用这种方法,也可以直接将buf中的内容直接通过sengmessage()发送到另一个程序的RichEdit20A的输入框中,也OK的,这点我自己先试试。主要还是不明白上面标记红色地方是什么意思“1118&”
      

  3.   

    常量EM_GETTEXTEX
    你也可以先定义
    const EM_GETTEXTEX = 1118&
    然后使用EM_GETTEXTEX.使用API,建议去查MSDN。