Private Const WM_SETTEXT = &HCPrivate Function sendmesStr(sStr As String) As String
Dim FT_hWnd As Long
Dim ID_Control_hWnd As Long
Dim strTitle As String
strTitle = Space(255) '定义接收字串
FT_hWnd = GetForegroundWindow ' FT_hWnd is the handle to the foreground window 'FT_hWnd = FindWindow("ThunderRT6FormDC", "228X")
GetWindowText FT_hWnd, strTitle, 1024
If Left(Replace(strTitle, " ", ""), 4) = "228X" Then
ID_Control_hWnd = FindWindowEx(FT_hWnd, 0, "RICHEDIT", vbNullString) 'GR_Execution_Class
SendMessage ID_Control_hWnd, WM_SETTEXT, 0, ByVal sStr
End If
End Function为什么调用此函数以后,程序不能按自己所愿往前台窗口发送字符串?如:sStr="Input error,Please input again!"实际上是运行后台程序以后,提示Microsoft那种发送或者不发送错误,然后后台程序自动关闭>
我用记事本命名为前台窗口,是可以的,但是到实际应用程序就不行,请教各位高手是我程序问题?还是那个前台程序在编写时就对窗口加了什么设置了?
Dim FT_hWnd As Long
Dim ID_Control_hWnd As Long
Dim strTitle As String
strTitle = Space(255) '定义接收字串
FT_hWnd = GetForegroundWindow ' FT_hWnd is the handle to the foreground window 'FT_hWnd = FindWindow("ThunderRT6FormDC", "228X")
GetWindowText FT_hWnd, strTitle, 1024
If Left(Replace(strTitle, " ", ""), 4) = "228X" Then
ID_Control_hWnd = FindWindowEx(FT_hWnd, 0, "RICHEDIT", vbNullString) 'GR_Execution_Class
SendMessage ID_Control_hWnd, WM_SETTEXT, 0, ByVal sStr
End If
End Function为什么调用此函数以后,程序不能按自己所愿往前台窗口发送字符串?如:sStr="Input error,Please input again!"实际上是运行后台程序以后,提示Microsoft那种发送或者不发送错误,然后后台程序自动关闭>
我用记事本命名为前台窗口,是可以的,但是到实际应用程序就不行,请教各位高手是我程序问题?还是那个前台程序在编写时就对窗口加了什么设置了?
解决方案 »
- vb6怎么实现类似linux里:选择文字,然后点鼠标中键粘贴
- 关于用VB给老的exe加个GUI?
- 如何判断用户输入的日期是合法的日期,格式为(yyyy-mm-dd)
- 如何得出有毫秒的时间?急,在线等待
- mschart更新的问题
- 关于用 webbrowser 控件打开 WORD 文件时碰到的问题
- vb高手救命!编写的ActiveX控件 控件属性 与 属性页?
- 调用Excel,把数据导入到其中之后,却总是提示另存为,请帮我看看这段源代码
- 用DotCHM制作CHM帮助文件时, 编译之后得到的是乱码, 怎么解决?
- 关于VB的......
- vBA的函数的参数个数最多是多少个?
- 怎么读取外程序的listbox的内容 在线
那个前台窗口FT_hWnd应用程序是点击另一个父应用程序里面的一个按钮弹出来的,应该也是属于一个独立窗体,因为我往那里面发送删除键操作是可以的,所以我想窗口句柄的获取应该是没错的把,另外:
由于窗体FT_hWnd被弹出来以后里面控件ID_Control_hWnd(Richbox一个文本框)就自动显示几行字符(那个前台程序本身会写几行字符提示用户输入),我的目的就是判断用户输入正确与否并往窗体控件ID_Control_hWnd里面的发送一个提示字符串,用sendkeys发送某一个字母可以,如果发送字符好象不好操作把?
1、SendMessage可以取字符,你可以先取回来,连接上要追加的再用你当前的方法发送过去。虽然看着步骤不少,但瞬间完成,应该看不出来你怎么做的。
2、修改你发送消息时的常数WM_SETTEXT = &HC,改为追加(想法而已,哈哈,我不知道有没有这个常数)