请问delphi中如何截取qq聊天内容中的输入框中文字。并且进行转换。
比如要把“人民币,你好”替换成“美元,你好”。 在qq的输入框中输入了“人民币,你好”,按下ctrl+回车后,发送的就是
“美元,你好”。 请问如何实现,给个具体例子让我学习下,非常感谢!
比如要把“人民币,你好”替换成“美元,你好”。 在qq的输入框中输入了“人民币,你好”,按下ctrl+回车后,发送的就是
“美元,你好”。 请问如何实现,给个具体例子让我学习下,非常感谢!
只要你的聊天窗体激活的时候(ncode=HCBT_SETFOCUS),就触发!然后
使用GetWindowText来获得当前获得焦点的窗体的句柄(句柄是传递的WParam参数,通过该句柄找到主窗口句柄)
然后再找文本框的句柄!找到之后,使用SendMessage发送修改文本消息就可以了。
要钩到窗口的Ctrl+Enter键,还要钩到鼠标单击“发送”按扭的单击。这个确实很重要!本来想用一个全局的键盘钩子来实现,看来考虑欠妥当!给个具体例子让我学习下,非常感谢!
是很简单。代码如下:var
s:String;
begin
s:='中华人民共和国';
//先用其它句柄查看工具得到RichEdit20A的句柄,例如句柄是“661940”,则用:
SendMessage(661940,EM_REPLACESEL,0,INTEGER(PCHAR(s)));
//发消息,如果有选定的则直接替换,如果没有选定的则在光标所在处添加。如果要替换,你直接先发一个全选,再发上述消息即可。QQ对消息进行了过滤,发送WM_SetText消息肯定不行。但可以用EM_REPLACESEL消息!希望我的回答对你有所帮助!
相当有帮助,不知EM_REPLACESEL是什么样的消息?
当此帖问题解决后,也就是hook部分.一起给分,其实,你就能解决,不知愿意帮忙不?
在以下事件之前,系统都会调用WH_CBT Hook子程,这些事件包括:
1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件;
2. 完成系统指令;
3. 来自系统消息队列中的移动鼠标,键盘事件;
4. 设置输入焦点事件;
5. 同步系统消息队列事件。
这个钩子确实可以在弹出聊天窗口时安装激活.
但下一步,有点迷糊.另外这个钩子好像不可以截获窗口的"发送"按钮和"ctrl+回车"发送的功能,不知有哪个钩子可以同时完成这个的?如果单独截获ctrl+回车,这个用键盘钩子我就能做到.再有一点,是如何发送给输入框全选消息?
我如果会这些,就好了!
SendMessage(Handle, EM_SETSEL, 0, -1);再次顶一下你的问题!
我只想选择人民币,不知能不能这样选择呢?一句话中,只选择符合自己要求的几个字进行替换?
之前有人问过,关于2009输入框句柄的问题,如果你能解决,哪个人的分也会给你的.