VB向一个外部程序发送一条字符到指定窗口的指定文本框

如题,我想自己写一个程序,输入姓名等信息,能直接填充到外部程序的相应输入框内。向高手朋友们求教啦!
发到信箱里也可以,非常感谢! Email: bogell@163.com

一般是用钩子程序的。
比较复杂,只能说个大体思路,要花最少30分钟。分太少了。

API函数的声明就不说了。
先用findwindow找到窗体,用GetWindow和GetClassName获得其窗体内各对象的句柄,从而可以获得文本框的句柄。
最后用SendMessage函数想文本框发送文本。

tWnd = FindWindow(vbNullString, "窗口名")可以获得外部程序窗口的句柄twnd
bwnd = GetWindow(tWnd, GW_CHILD)可以获得该窗口子对象的集合句柄bwnd
Do Until bwnd = 0
GetClassName bwnd, sSave, 250
If InStr(1, UCase(sSave), "EDIT", vbTextCompare) <> 0 Then
editwnd = bwnd
Exit Do
End If
bwnd = GetWindow(bwnd, GW_HWNDNEXT)
Loop

以上代码可以读到该窗口中的第一个文本框的句柄editwnd
SendMessage editwnd, WM_SETTEXT, 6, "王小明"
以上代码向editwnd中写入“王小明”,6表示其长度。该方法写入时,文本框中原有内容全部覆盖。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-20
网上有这样的实例的,就是发送信息到其他程序,但简单的可以用sendkey,复杂的要用钩子,甚至要用驱动

VB向一个外部程序发送一条字符到指定窗口的指定文本框
先用findwindow找到窗体,用GetWindow和GetClassName获得其窗体内各对象的句柄,从而可以获得文本框的句柄。最后用SendMessage函数想文本框发送文本。tWnd = FindWindow(vbNullString, "窗口名")可以获得外部程序窗口的句柄twnd bwnd = GetWindow(tWnd, GW_CHILD)可以获得该窗口子对象的集合句柄bwnd Do U...

vb中如何将自己程序里的文字,输出到别的程序文本框中?像输入法一样的...
思路1:把你自己程序里面的文字存储到一个变量a里面 然后把变量a里面的内容写入到一个文本里面 另一个程序里面打开这个文本,把文本里面的东西添加到你的文本框里面 思路2 在原来程序的基础上添加窗体form2 把你自己程序里面的文字添加到text1里面 然后 form2.Text1.Text = Form1.Text1.Text ...

能否用VBS向一个窗体里的对像发送信息,比如双击一个按钮或向文本框输入...
最简单的就是用Sendkeys 例如:set ws=createobject("wscript.shell")ws.sendkeys "%{f4}" '表示按键alt+f4 ws.SendKeys "{enter}" '表示按键回车 我写了个完整的:set ws=createobject("wscript.shell")ws.SendKeys "{enter}"WScript.Sleep 5000 qq="m"Do While 1 ws.Run "c"&qq&"...

用VB编写程序向其他程序光标闪动处中输入文字
先在VB中添加一个按钮 在按钮中加入事件 Dim ReturnValue ReturnValue = Shell("NotePad.EXE", 1) ' 在这里打开要运行的程序 AppActivate ReturnValue ' 激活记事本。SendKeys "发送这些字符到记事本", True '

用VB 向指定的程序窗口发键盘事件该如何编写?
方法1: 用 SendKeys 语句 AppActivate "接收键盘事件的窗口标题" ' 激活指定窗口 SendKeys "A", True '发送字符 A 方法2: 用 API 函数 这个方法实现起来较复杂,给你一个思路:用 FindWindow 查找特定标题的窗口,获得该窗口的句柄,用 SendMessage 向该窗口发送键盘消息。Declare Function Find...

vb 把文本框内容输入到制定窗口
Ahwnd = FindWindowEx(Hnd, Ahwnd, "AfxWnd42", vbNullString)Texthwnd = FindWindowEx(Ahwnd, 0, "RichEdit20A", vbNullString)SendMessage Texthwnd, EM_REPLACESEL, 0, ByVal Text1.Text Buhwnd = FindWindowEx(Hnd, 0, "Button", "发送(S)")SendMessage Buhwnd, BM_CLICK, 0, 0 End...

vb.net 如何操作外部程序?如输入文本..
Thread.Sleep(50)System.Windows.Forms.SendKeys.Send("{tab}")System.Threading.Thread.Sleep(50)System.Windows.Forms.SendKeys.Send("密码")System.Threading.Thread.Sleep(50)System.Windows.Forms.SendKeys.Send("{Enter}")有的时候会出现发送不完全,我也正在寻找更好的方法,多多交流。

vb一个窗体向另一个窗体的文本框 写东西 怎么办 ?
将这个窗体的某个文本框的值赋值给另一个窗体文本框的属性text就可,且不管另一个窗体是否加载(只要被调用窗体名对,且在工程内,该窗体的任一控件的属性在语句中被提及,被调用窗体被装载窗体到内存,但窗体不显示).如想随时刷新,则用一个timer控件,写入需赋值或传递的语句....

VB 向外部程序文本框发送数据 帮忙看看
从上面的分析我们可以看出,关键在于第二个参数,只要把每次找到的文本框句柄作为第二个参数再次搜索,就能找到下一个文本框啦!比如下面的方法就可以把窗体内的所有文本框全部填上指定的字符:hwd1 = 0 Do hwd1 = FindWindowEx(hwd, hwd1, Text2.Text, vbNullString)If hwd1 = 0 Then MsgBox "...

vb实现输入窗口句柄就能找到指定窗口并显示窗口信息的程序
Private Sub Command1_Click()Dim n As Long Dim str1 As String Dim h As Long, h1 As String Dim p As RECT h1 = InputBox("请输入窗口句柄", , Me.hwnd)If IsNumeric(h1) Then If Int(h1) = Val(h1) Then h = h1 Else MsgBox "非整数"Exit Sub End If Else MsgBox "非整数...

相似回答