取得程序外另外一个程序的中的 文 本 框 中 的 内 容

jp0088888 2008-04-04 10:10:03
如 何 编 程 实 现 .急 用 .谢 了 .
...全文
45 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cbm6666 2008-04-05
'************************** 代码 1
'添加 Text1

Private Sub Form_Load()
Text1.Text = "CBM666 到此一游"
Me.Caption = "隔岸观火"
End Sub


'**************************** 代码 2 用来抓上面代码1里面的Text1的内容
'添加 Command1

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
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
Const WM_GETTEXT = &HD
Const WM_GETTEXTLENGTH = &HE
Dim Phwnd&, ChildHwnd&, Tmpstr$, Textlen&
Private Sub Command1_Click()
Phwnd = FindWindow(vbNullString, "隔岸观火")
If Phwnd <> 0 Then
ChildHwnd = FindWindowEx(Phwnd, 0, "ThunderTextBox", vbNullString)
If ChildHwnd > 0 Then
MsgBox GetText(ChildHwnd)
End If
End If
End Sub

Function GetText(Thwnd As Long) As String
Textlen = SendMessage(Thwnd, WM_GETTEXTLENGTH, 0, 0)
If Textlen = 0 Then GetText = "": Exit Function
Textlen = Textlen + 1
Tmpstr = Space(Textlen)
Textlen = SendMessage(Thwnd, WM_GETTEXT, Textlen, ByVal Tmpstr)
GetText = Left(Tmpstr, Textlen)
End Function

回复
cbm6666 2008-04-05
Attn: 5F

写字版的类名是 RichEdit20W 只有一个

记事本的类名是 Edit 也是只有一个

QQ的聊天窗口的类名是 RichEdit20A 有两个,它的顺序是固定的,而且上面那个窗口是只读不容许赋值.

VB的TextBox 的类名是ThunderTextBox, 当然会有多个,但是这个可以很容易的区分为Text1 Text2 或Text3
回复
东方之珠 2008-04-05
3楼的代码对写字板无效,写字板好像有2个文本框。
回复
jp0088888 2008-04-05
很 好 .己 经 搞 定 了 .谢 了
回复
晕哦.
回复
jp0088888 2008-04-04
有 具 体 的 程 序 吗 ?好 久 没 有 编 程 了 .知 道 原 理 但 就 是 编 不 出 来 .谢 了 .急 用 .
回复
supergreenbean 2008-04-04
FindWindow
GetWindowText
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7492

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-04-04 10:10
社区公告
暂无公告