如果有一个执行中的应用程序,假设名字叫做abc,该程序有一个窗体,窗体上有一个文本框(不一定是vb里面的文本框)请问有什么办法编一个程序让这个窗体在无论失去焦点还是拥有焦点的时候,在文本框中发送字符。就是比如让那个程序的文本框中显示abcdedf回车。(注意,不是仅仅的发送文本,是键盘事件,要可以响应回车等命令)。
解决方案 »
- 关于word格式检查
- 请各大VB程序进来一下~~~!
- RichTextbox与ComboBox配合使用,Richtext中选定的文字点击ComboBox后不能保持?求助
- 如何将从文件中取得的二进制数据转为BASE64编码
- 设计一函数--功能权限的设置问题
- 帮菜鸟解答下
- 如何播放Dat(VCD格式)文件时控制左右声道,并且不使用控件来播放呢
- 关于VB6.0和SQL数据库7.0的一个问题,朋友们帮帮忙啦!
- 高手请进!关于编写windows进程问题?
- 请问:我在程序中用Set xx = Controls.Add("vb.commandbutton", "cmd" & i)添加多个按钮,如何程序中实现删除?
- 怎么彻底删除MSHFLEXGRID控件中的内容啊?
- 如何将搜索到的QQ号码存为文本,100分相送,祝大虾们事业一帆风顺!(速速帮我)
bWnd = FindWindowEx(tWnd, ByVal 0&, "ThunderTextBox", vbNullString)
SendMessage bWnd, WM_SETTEXT, 0, ByVal "abcdedf" & vbCrLf可以新建一个窗口,添加一个文本框
bwnd=GetDlgItem(主窗体句柄,控件ID)
先获得句柄:
用findwindow获取窗口句柄
用findwindowex获得控件句柄获得句柄后,就可以模拟键盘输入了:
可用的方法:
1 sendkeys
2 keybd_event
3 用sendmessage发送wm_char消息(如果包含中文的话,则发送wm_ime_char消息)
tWnd = FindWindow(vbNullString, "abc")
bWnd = FindWindowEx(tWnd, ByVal 0&, "ThunderTextBox", vbNullString)
SendMessage bWnd, WM_SETTEXT, 0, ByVal "abcdedf" & vbCrLf可以新建一个窗口,添加一个文本框
----------------------------------------------------------online你的说法是对的,但是似乎这只能实现vb间的程序或者vb编写的程序,其他程序就不行啊。
举个例子,怎么自动在qq的登陆窗口中输入密码什么的?!
望赐教!3Q very much.
b = FindWindowEx(t, ByVal 0&, "Edit", vbNullString)
Dim astr As String * 256
SendMessage b, WM_SETTEXT, 0, ByVal Text1.Text 'text1内为QQ号码.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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
Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Const WM_SETTEXT = &HC
Private Const BM_CLICK = &HF5
Private Sub Command1_Click()
Dim mhwnd As Long
mhwnd = FindWindow("#32770", vbNullString)
If mhwnd <> 0 Then
Dim usernamehwnd As Long
Dim passwordhwnd As Long
Dim buttonhwnd As Long
buttonhwnd = GetDlgItem(mhwnd, &H1) '&H1为按纽的id,用spy++获得,不同版本的qq,可能不尽相同,你最好还是自己查看一下以下
usernamehwnd = GetDlgItem(mhwnd, &H8A)
passwordhwnd = GetDlgItem(mhwnd, &HB4)
If passwordhwnd And usernamehwnd Then
'输入QQ号码
SendMessage usernamehwnd, WM_SETTEXT, 0&, ByVal "281187435"
'输入密码
SendMessage passwordhwnd, WM_SETTEXT, 0&, ByVal "abcde"
'点击登陆按钮
SendMessage buttonhwnd, BM_CLICK, 0&, ByVal 0&
End If
End If
End Sub
QQ2003III Build0117
装了VC++就会有的。
不能在spy++中直接找到了
http://www.5ivb.net/club/UploadFile/200453095437byUID34770.rar
Private Sub Command2_Click()
Dim t As Long
Dim b As Long
Dim d As Long
Dim c As Longt = FindWindow("#32770", vbNullString)
b = FindWindowEx(t, ByVal 0&, "ComboBox", vbNullString)
c = FindWindowEx(t, b, "Edit", vbNullString)
SendMessage b, WM_SETTEXT, 0, ByVal "57569"
SendMessage c, WM_SETTEXT, 0, ByVal "ato77"
d = FindWindowEx(t, ByVal 0&, "Button", "登录")
SendMessage d, BM_CLICK, 0, 0
End Sub