回 帖 发 新 帖 刷新版面

主题:如何获得当前程序中文本框内容?

本人用lLen = SendMessage(WinHwnd, WM_GETTEXT, Len(GetWinText), GetWinText)
程序但始终得不到文本框内容,请指教[em18]

回复列表 (共6个回复)

沙发

WM_GETTEXT是获取窗体的标题,而不是文本框内容。

t=text1

变量t就获得了文本框的内容。

Clipboard.SetText text1

剪切板就获得了文本框的内容

板凳

[quote]WM_GETTEXT是获取窗体的标题,而不是文本框内容。
[/quote]
NO,WM_GETTEXT是获取控件文本的通用消息。

3 楼


哪到底有什么好的方法获得当前光标志所在的窗口的文本内容呢

4 楼

[quote]WM_GETTEXT是获取窗体的标题,而不是文本框内容。

t=text1

变量t就获得了文本框的内容。

Clipboard.SetText text1

剪切板就获得了文本框的内容[/quote]


你理解有误,我讲的是获取当前窗口中文本框内容,这个文本框不一定是vb 程序文本框,它是当前运行的任意程序中,光标所的文本框,对话框,等等框中的,文档内容,前提是已知它的句柄,hwnd

5 楼

哦,这样啊。
WM_GETTEXT取得的是字节型的数据,所以你要用字节型数组:

Dim Txt(1024) As Byte '下标大小按需设置

SendMessage hWin, &HD, 1024, Txt(0)
Text1 = StrConv(Txt, vbUnicode)

6 楼

新建一工程,添加一按钮,一文本框

[quote]
Private Const WM_GETTEXT = &HD
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Private Sub Command1_Click()
    Dim sBuffer As String
    Dim n As Long
    sBuffer = String(1024, vbNullChar)
    n = SendMessage(Text1.hwnd, WM_GETTEXT, 1024, ByVal StrPtr(sBuffer))
    Me.Caption = Left(sBuffer, n)
End Sub
[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册