首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

怎么向一个程序的文本框中发送数据

2012-03-30 
如何向一个程序的文本框中发送数据?比如QQ的登陆框,其中的QQ号和密码,我可以通过程序直接传送过去,而不需

如何向一个程序的文本框中发送数据?
比如QQ的登陆框,其中的QQ号和密码,我可以通过程序直接传送过去,而不需要自己输入?不知道需要什么函数才可以解决?

[解决办法]
Sendkeys 和 Sendmessage 使用技巧一例 选择自 northwolves 的 Blog

Private Declare Function SendMessage Lib "user32.dll " Alias "SendMessageA " (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32.dll " 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

Function sqrx(ByVal x As Double) As String '计算平方根(比VB DOUBLE 类型精度高)
Dim temp As String, i As Long, j As Long
Shell "Calc.EXE ", vbMinimizedNoFocus '运行计算器
temp = x & "y0.5= "
For i = 1 To Len(temp)
SendKeys Mid(temp, i, 1), True '向计算器顺序发送按键消息X (X^Y) 0.5=
Next
temp = String(64, Chr(0))
i = FindWindow(vbNullString, "计算器 ") '窗口句柄
j = FindWindowEx(i, ByVal 0&, "Edit ", vbNullString) '编辑框句柄
SendMessage j, &HD, Len(temp), ByVal temp '发送编辑框文本至temp
SendKeys "%{F4} ", True '调用ALT+F4关闭计算器窗口
sqrx = temp
End Function

Private Sub Command1_Click()
Dim i As Integer
For i = 17 To 24
Debug.Print "sqrx( " & i & ")= " & sqrx(i)
Next
End Sub



返回:
sqrx(17)=4.1231056256176605498214098559741
sqrx(18)=4.2426406871192851464050661726291
sqrx(19)=4.3588989435406735522369819838596
sqrx(20)=4.4721359549995793928183473374626
sqrx(21)=4.582575694955840006588047193728
sqrx(22)=4.6904157598234295545656301135445
sqrx(23)=4.7958315233127195415974380641627
sqrx(24)=4.8989794855663561963945681494118

[解决办法]
Option Explicit

Private Declare Function SendMessage Lib "user32.dll " Alias "SendMessageA " (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const WM_SETTEXT As Long = &HC

Private Function APISetText(ByVal hwnd As Long, ByVal sStr As String)
Dim lRet As Long

lRet = SendMessage(hwnd, WM_SETTEXT, 32, ByVal sStr)
End Function

把这些放窗体里,然后作如下调用:

APISetText [句柄],[字符串]

不过目标如果是QQ密码框的话,我已经测试过了,不成功.

貌似那个密码框已经作了处理了.

热点排行