我试过用sendmessage hwnd, WM_SETTEXT,0,文本
但是结果是把里面的文本全部替换掉了,请问正确的方法是什么。

解决方案 »

  1.   

    Dim str As String, length As Long
    length = SendMessage(hwnd, WM_GETTEXTLENGTH, 0, ByVal 0&)
    str = Space(length)
    SendMessage hwnd, WM_GETTEXT, length + 1, ByVal str
    str = str & "文本"
    SendMessage hwnd, WM_SETTEXT, 0, ByVal str
      

  2.   

    谢谢 MaJF() 的回复,试了一下,发现只能在文本的末尾添加,而且之前要获取文本框内所有的文字,再粘回去,这样如果是很大40K以上的文本效率就很了。
    我希望能达到键盘输入的那种效果,光标在哪里,文本就输入到那里。前提是不用sendkeys。
      

  3.   

    -_-! 提问应该描述清楚点~~~以下代码未经详细测试~~~Const WM_IME_CHAR = &H286
    Const WM_IME_COMPOSITION = &H10FDim str As String
    str = "你好吗^_^"
    For i = 1 To Len(str)
    PostMessage hwnd, WM_IME_COMPOSITION, 0, &H800
    SendMessage hwnd, WM_IME_CHAR, Asc(Mid(str, i, 1)), ByVal 1&
    Next
      

  4.   

    非常感谢 MaJF(),对我的启发很大, 你的方法是可行的。碰到高手了。
    借问一下,你是怎样掌握的winapi,我看着VC的那些头文件,还有网上的一些范例总是一知半解,知道里面的东西很有用,却不知道应该怎么用, 有什么好的资料书籍可以系统学习呢。授人以鱼,不如授人以渔,请你指点指点,谢谢!
      

  5.   

    学习Win32 API当然实看Msdn啊~~~
      

  6.   

    好奇的问一下:MaJF()你是专业程序员吗?或者玩VB,VC多久了。
      

  7.   

    离专业程序员还远着呢~~~~
    放暑假闷得很,上来答问题打发一下时间~~~~
    以前对WIN32API也是一知半解~~
    在看雪论坛上泡了半年,对系统内部的东西有了一定的理解,现在对WIN32 SDK比较熟悉了~~