qq2006中怎样取得发送消息窗口中的Richedit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qq2006中怎样取得发送消息窗口中的Richedit相关的知识,希望对你有一定的参考价值。

参考技术A 分类: 电脑/网络 >> 软件
问题描述:

学习编程中想让程序可以自动在QQ的发送消息框中自动发送消息,但在QQ2006中好象发送消息框中的RICHEDIT加密了,用这样的方法的不到了,请高手看下如下代码:

fLastWin := FindWindowEx(GetForegroundWindow, THandle(nil), '#32770', nil);

if fLastWin = 0 then Exit;

fButton := FindWindowEx(GetForegroundWindow, THandle(nil),nil,'发送(&S)');

if fButton=0 then Exit;(这个发送按扭也找不到,所以暂时没有用)

fLastWin := FindWindowEx(fLastWin, THandle(nil),'AfxWnd42',nil);

if fLastWin=0 then Exit;

label2 .Caption:=('以上条件成立');在这里时还可以提示成立

fLastWin := FindWindowEx(fLastWin, THandle(nil),'RICHEDIT',nil);

if fLastWin=0 then Exit;

label2 .Caption:=('以上条件成立');但在这里就不行了

SendMessage(RICHEDIT,EM_REPLACESEL,180,Integer(Pchar(Edit1.TEXT)));

请各位大侠指点小弟!多谢

解析:

以下是从网上找的一段代码,你可以试下,FindWindow用法说得有误,第一个参数应该是类名,第二个是窗口名,也即是标题。你自己改下吧。

var

Wnd: HWND;

begin

查找标题为123,类名是#32770的窗口

Wnd := FindWindow('123', '#32770');

if Wnd <> 0 then

begin

查找文本是'Edit1',类名是EDIT的子窗口

Wnd := FindWindowEx(Wnd, 0, 'Edit1', 'EDIT');

if Wnd <> 0 then SetWindowText(Wnd, PChar('Test');

end;

end;

你也可以用Spy++之类的察看目标EDIT的Identifier(ID)

var

Wnd: HWND;

const

ID: 123;

begin

查找标题为123,类名是#32770的窗口

Wnd := FindWindow('123', '#32770');

if Wnd <> 0 then

begin

Wnd := GetDlgItem(Wnd, ID);

if Wnd <> 0 then SetWindowText(Wnd, PChar('Test');

end;

end;

具体的查查MSDN吧

vc中应该如何向窗口发送组合键消息

已经有窗口句柄,只是用windows API
谢谢
比如说 Ctrl+‘s'

SendKeys.Send("^+TAB"); 题目永远不在于如何应用思维里产生极新的、发明性的思惟,而在于如何从思维里镌汰旧观念。SendKeys.Send("^+TAB");没有风波,就不克不及显示帆的本质;没有盘曲,就无法咀嚼人生的乐趣。应用SendKeys将键击和组合键击发送到活动应用法度。此类无法实例化。若要发送一个键击给某个类并立即持续法度流,请应用Send。若要守候键击启动的任何过程,请应用SendWait。
每个键都由一个或多个字符默示。若要指定单个键盘字符,请应用该字符本身。例如,若要默示字母 A,请将字符串“A”传递给办法。若要默示多个字符,请将各个附加字符追加到它之前的字符的后面。若要默示字母A、B和C,请将参数指定为“ABC”。
加号(+)、插入符号(^)、百分号(%)、波浪号(~)以及圆括号()对 SendKeys 具有特别含义。若要指定这些字符中的某个字符,请将其放在大括号 () 内。例如,若要指定加号,请应用“+”。若要指定大括号字符,请应用“”和“”。中括号 ([ ]) 对 SendKeys 没有特别含义,但必须将它们放在大括号内。在其他应用法度中,中括号具有特别含义,此含义可能会在产活泼态数据互换(DDE)时起首要感化。
若要指定在按键(如ENTER或TAB)时不显示的字符,以及默示操纵而不默示字符的键,请应用下表中的代码: 键 代码
BACKSPACE BACKSPACE、BS 或 BKSP
BREAK BREAK
CAPS LOCK CAPSLOCK
DEL 或 DELETE DELETE 或 DEL
DOWN ARROW(下箭头键) DOWNEND ENDENTER ENTER 或 ~ESC ESCHELP HELP
HOME HOME
INS 或 INSERT INSERT 或 INS
LEFT ARROW(左箭头键) LEFT
NUM LOCK NUMLOCK
PAGE DOWN PGDN
PAGE UP PGUP
PRINT SCREEN PRTSC(保存供将来应用)
RIGHT ARROW(右箭头键) RIGHT
SCROLL LOCK SCROLLLOCKTAB TABUP ARROW(上箭头键) UPF1 F1F2 F2F3 F3F4 F4F5 F5F6 F6F7 F7F8 F8F9 F9F10 F10F11 F11F12 F12F13 F13F14 F14F15 F15F16 F16数字键盘加号 ADD
数字键盘减号 SUBTRACT
数字键盘乘号 MULTIPLY
数字键盘除号 DIVIDE
若要指定与SHIFT、CTRL和ALT键的随便率性组合一路应用的键,请在这些键代码之前加上以下一段或多段代码。 键 代码SHIFT +CTRL ^ALT %若要指定在按一些键时应同时按住SHIFT、CTRL和ALT键的随便率性组合,请将这些键的代码放在括号内。例如,若要指定按E和C时同时按住SHIFT键,请应用“+(EC)”。若要指定按E时应按住SHIFT,之后按C时不按住 SHIFT,请应用“+EC”。
要指定反复的键,请应用 键数字 的情势。键和数字之间必须放一空格。例如,LEFT 42 默示按左箭头键 42 次;h 10 默示按H 10次。
参考技术A 详情请看参考资料,他说的是alt键
而ctrl键的虚拟键值为VK_CONTROL,换一下就行了。

参考资料:http://blog.csdn.net/pjl1119/article/details/6914902

本回答被提问者采纳

以上是关于qq2006中怎样取得发送消息窗口中的Richedit的主要内容,如果未能解决你的问题,请参考以下文章

qq消息怎么定时自动发送

手机回车键怎么设置?

QQ怎样自动发消息

C#编写一款qq消息群发器

怎样批量发送以太坊ETH?

关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)