vb能发送字符吗?怎样发送

vb能发送字符吗?怎样发送
比如我单击一次控制按钮,系统就会往某窗口输入文字“天下书盟”。
这里我说的某窗口不单指文本框,还有某些FLASH输入框等。

总之就是能相当于自己在那个窗口打字。

我在网上搜了搜,发现介绍这类的方法很多,但我是菜鸟,看不懂什么API函数。只会简单的改改相应文本。

这里有个别人介绍的代码
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 Any, ByVal lpsz1 As Any, ByVal lpsz2 As String) As Long

'发消息
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 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

'设置文本用的消息
Private Const WM_SETTEXT = &HC&

Private Sub Command1_Click()
Dim hWndWindow As Long
Dim hWndEdit As Long
'用FindWindow通过窗口标题取得窗口句柄
hWndWindow = FindWindow(vbNullString, "无标题 - 记事本")
'用findWindowEx通过窗口句柄取得文本框(即"edit")的句柄
hWndEdit = FindWindowEx(hWndWindow, vbNullString, "edit", vbNullString)
'用SendMessage向取得的文本框句柄发送WM_SETTEXT消息
SendMessage hWndEdit, WM_SETTEXT, 0, ByVal "中华人民共和国 Chinese"
End Sub

我试验过了,这个能对文本框发送字符。但不能在一些游戏中的聊天窗口发送文字。
问题应该是在这句上吧?
hWndEdit = FindWindowEx(hWndWindow, vbNullString, "edit", vbNullString)

应该如何改?
你可以试着用Spy++之类的工具看看能否抓出那些你希望发送文字过去的目标文本框笑或帆的窗口句柄。

不过,有很多应用程序里面看见的文本框实际上并不是普通的Windows文本框(即具有窗口句柄的碰雹文本框),比如网页里面的文本框,WPF窗口里面的文本框等。我猜测Flash动画里面的文本框可能也类似。对于这种类型的文本框,是不能用SendMessage去设置文字的。

另外有一条思路是走IAccessible接口,这样类似网页、WPF窗口里面的文本框大部分也都能取到了。不过不知Flash动画窗团辩口是否支持IAccessible,估计是支持的。因为一般比较成熟的大公司做的产品都会考虑这个的。

如果感兴趣的话,建议可以在网上搜索一下IAccessible或者MSAA(Microsoft Active Accessibility)的有关内容。
Private Sub Command1_Click()
Form1.Caption = "天下枯老肆书盟"
End Sub

改变窗体的caption属性或者label的caption等就可以改没轿显示的文含轿字了啊
找到句柄才能发呀。。。
← 上一篇: 下一篇: →