主题:如何获得当前程序中文本框内容?
loongchina
[专家分:90] 发布于 2008-08-17 17:43:00
本人用lLen = SendMessage(WinHwnd, WM_GETTEXT, Len(GetWinText), GetWinText)
程序但始终得不到文本框内容,请指教[em18]
最后更新于:2008-08-18 19:57:00
回复列表 (共6个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-08-18 09:15:00
WM_GETTEXT是获取窗体的标题,而不是文本框内容。
t=text1
变量t就获得了文本框的内容。
Clipboard.SetText text1
剪切板就获得了文本框的内容
板凳
tanchuhan [专家分:15140] 发布于 2008-08-18 09:50:00
[quote]WM_GETTEXT是获取窗体的标题,而不是文本框内容。
[/quote]
NO,WM_GETTEXT是获取控件文本的通用消息。
3 楼
loongchina [专家分:90] 发布于 2008-08-18 16:10:00
哪到底有什么好的方法获得当前光标志所在的窗口的文本内容呢
4 楼
loongchina [专家分:90] 发布于 2008-08-18 16:18:00
[quote]WM_GETTEXT是获取窗体的标题,而不是文本框内容。
t=text1
变量t就获得了文本框的内容。
Clipboard.SetText text1
剪切板就获得了文本框的内容[/quote]
你理解有误,我讲的是获取当前窗口中文本框内容,这个文本框不一定是vb 程序文本框,它是当前运行的任意程序中,光标所的文本框,对话框,等等框中的,文档内容,前提是已知它的句柄,hwnd
5 楼
一江秋水 [专家分:9680] 发布于 2008-08-19 09:56:00
哦,这样啊。
WM_GETTEXT取得的是字节型的数据,所以你要用字节型数组:
Dim Txt(1024) As Byte '下标大小按需设置
SendMessage hWin, &HD, 1024, Txt(0)
Text1 = StrConv(Txt, vbUnicode)
6 楼
tanchuhan [专家分:15140] 发布于 2008-08-19 12:11:00
新建一工程,添加一按钮,一文本框
[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]
我来回复