VB,API函数中EM_REPLACESEL的纠结
时间:2011-07-26
来源:互联网
类似像小外挂的形式。我想清除某程序的某个文本框的值,再发送值
SendMessage a2, EM_REPLACESEL, 0, ByVal 发送内容
上面这句的意思是发送 内容,但我想发送前 先清除,什么语句?
-----------------------------------------------------------------
程序的句柄和预写入文本框的句柄我都获取到了,
文本框的内容也可以写入了,但是就是要累加上去啊,郁闷~
SendMessage a2, EM_REPLACESEL, 0, ByVal ttt '向该句柄(文本框)发送 ttt的值
假如:ttt="http://forum.csdn.net"
一直是http://forum.csdn.nethttp://forum.csdn.nethttp://forum.csdn.nethttp://forum.csdn.net......郁闷
我只要一个http://forum.csdn.net就够了,
楼下的,怎么办?改怎么办?
附上我的源码,方便大家查看
http://www.zjbtq.com/测试.rar
SendMessage a2, EM_REPLACESEL, 0, ByVal 发送内容
上面这句的意思是发送 内容,但我想发送前 先清除,什么语句?
-----------------------------------------------------------------
程序的句柄和预写入文本框的句柄我都获取到了,
文本框的内容也可以写入了,但是就是要累加上去啊,郁闷~
SendMessage a2, EM_REPLACESEL, 0, ByVal ttt '向该句柄(文本框)发送 ttt的值
假如:ttt="http://forum.csdn.net"
一直是http://forum.csdn.nethttp://forum.csdn.nethttp://forum.csdn.nethttp://forum.csdn.net......郁闷
我只要一个http://forum.csdn.net就够了,
楼下的,怎么办?改怎么办?
附上我的源码,方便大家查看
http://www.zjbtq.com/测试.rar
作者: cixihpf 发布时间: 2011-07-26
在那个帖子里已经给你回过了,两种办法,一种是用EM_REPLACESEL, 另一种是MW_SETTEXT
Replace方法如下
VB code
Replace方法如下
VB code
Option Explicit 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 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 Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long Private Const EM_REPLACESEL = &HC2 Private Const WM_SETTEXT = &HC Dim ChildHwnd As Long '记事本文本框的句柄 Dim NotepadHwnd As Long '记事本的句柄 Dim i As Long '改变记事本的标题 Private Sub Command1_Click() ' SendMessage(句柄, 消息, 0, ByVal 标题) 'Call SendMessage(NotepadHwnd, WM_SETTEXT, 0, ByVal "你好,标题!") End Sub '可把字符加到文件未尾 Private Sub Command2_Click() 'SetActiveWindow (NotepadHwnd) SendMessage ChildHwnd, 7, 0, 0 '获取焦点 SendMessage ChildHwnd, 177, 0, -1 '选中 i = i + 1 SendMessage ChildHwnd, EM_REPLACESEL, 0, ByVal "你好,内容!" & i End Sub '用EM_REPLACESEL可以追加字符 Private Sub Form_Load() Shell "notepad.exe", vbNormalFocus NotepadHwnd = FindWindow("notepad", vbNullString) '得到窗口类名为Edit的窗口句柄 ChildHwnd = FindWindowEx(NotepadHwnd, 0, "Edit", vbNullString) End Sub
作者: BestBadGod 发布时间: 2011-07-26
今天的这个程序代码如下:
VB code
VB code
Private Sub Command1_Click() a1 = FindWindow("ThunderRT6FormDC", "Form1") '检测是否有程序运行界面 a2 = FindWindowEx(a1, 0, "ThunderRT6TextBox", vbNullString) '获取该程序界面的Edit的句柄值 SendMessage a2, 7, 0, 0 '获取焦点 SendMessage a2, 177, 0, -1 '选中 SendMessage a2, EM_REPLACESEL, 0, ByVal "http://www.163.com" Command1.Caption = "成功!" 'Timer1.Enabled = True 'Timer1.Interval = 3000 'Command1.Enabled = False End Sub Private Sub Form_Load() hWnd1 = FindWindow("ThunderRT6FormDC", "Form1") If hWnd1 = 0 Then MsgBox "未运行!" Unload Me Exit Sub End If If hWnd1 <> 0 Then 'MsgBox "该游戏已经行!句柄:" & hWnd1 End If End Sub Private Sub Timer1_Timer() a1 = FindWindow("ThunderRT6FormDC", "Form1") '检测是否有程序运行界面 a2 = FindWindowEx(a1, 0, "ThunderRT6TextBox", vbNullString) '获取该程序界面的Edit的句柄值 SendMessage a2, EM_REPLACESEL, 0, ByVal "http://www.163.com" Command1.Caption = "成功!" End Sub
作者: BestBadGod 发布时间: 2011-07-26
不用timer 直接在Click里就可以了
作者: BestBadGod 发布时间: 2011-07-26
timer1还是要的,因为我随着时间我插入的网址是要改变的,你用获取焦点的方法不行,还是会追加。
作者: cixihpf 发布时间: 2011-07-26
引用 4 楼 cixihpf 的回复:
timer1还是要的,因为我随着时间我插入的网址是要改变的,你用获取焦点的方法不行,还是会追加。
timer1还是要的,因为我随着时间我插入的网址是要改变的,你用获取焦点的方法不行,还是会追加。
我试了怎么没追加

作者: BestBadGod 发布时间: 2011-07-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28