如何找到QQ上的窗句柄(100分)

  • 主题发起人 主题发起人 ICEsting
  • 开始时间 开始时间
I

ICEsting

Unregistered / Unconfirmed
GUEST, unregistred user!
我想找QQ对话模式下的回话窗体的句柄。<br>我觉的那个是一个memo(我觉的QQ就是用delphi做的)<br>我用finwindow(nil,'对话模式')找到窗体句柄<br>我再想怎么找到那个回别人话的句柄,然后用sendmessage(hand,wm_paste)粘贴<br>上文字,<br>我做了半天,好像找到了那个句柄,但是粘贴不上去文字,<br><br>那位知道一定要帮帮我的忙!!感激不尽!!!!!
 
试一试 SetWindowText
 
函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个控制,则改变控制的文本内容。然而,SetWindowText函数不改变其他应用程序中的控制的文本内容。<br><br>&nbsp; &nbsp; 函数原型:BOOL SetWindowText(HWND hwnd,LPCTSTR lpStrjng);<br><br>&nbsp; &nbsp; 参数:<br><br>&nbsp; &nbsp; hWnd:要改变文本内容的窗口或控制的句柄。<br><br>&nbsp; &nbsp; lpString:指向一个空结束的字符串的指针,该字符串将作为窗口或控制的新文本。<br><br>&nbsp; &nbsp; 返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。<br><br>&nbsp; &nbsp; 备注:如果目标窗口属于当前进程,SetWindowText函数会使WM_SETTEXT消息发送给指定的窗口或控制。然而,如果控制是以WS_CAPTION风格创建的列表框控制,SetWindowText函数将为控制设置文本,而不是为列表项设置文本。<br><br>&nbsp; &nbsp; SetWindowText函数不扩展tab字符(ASCII代码0×09),Tab字符以字符‘}’来显示。<br><br>&nbsp; &nbsp; 速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件;winuser.h;库文件:user32.lib;Unicode:Windows NT上实现为Unicode和ANSI两种版本。<br>
 
&nbsp; 类似的问题,我得到Windows“开始”的句柄后,用setwindowtext()却不能<br>改“开始”两个字,不知道为什么?应该怎么做呢?
 
请问楼主,你是怎么得到这个窗口的句柄呀,我菜鸟一级的,API一点也不会,<br>
 
你只找到了窗口的句柄,还得找到窗口里面控件的句柄才成<br>var<br>&nbsp; h,h1: hwnd;<br>begin<br>&nbsp; h := findwindow(nil,'对话模式');<br>&nbsp; h1 := FindWindowEx(h,0,'richEdit',nil);<br>&nbsp; sendMessage(h1,wm_setText,0,integer(pchar('aaaaaaaaaaa')));<br>end;
 
分析了一下,可能找到的是显示信息的窗口句柄,没找到回复消息的窗口句柄.<br>我用CAkk以前的一段代码解决的.<br>代码如下<br>procedure SendKeys(Mstr:string);<br>var CharCode,i:integer;<br>&nbsp; &nbsp; Sstr:string;<br>&nbsp; &nbsp; focushld,windowhld:hwnd;<br>&nbsp; &nbsp; threadld:dword;<br>begin<br>&nbsp; windowhld:=GetForegroundWindow;<br>&nbsp; threadld:=GetWindowThreadProcessId(Windowhld,nil);<br>&nbsp; AttachThreadInput(GetCurrentThreadId,threadld,true);<br>&nbsp; Focushld:=getfocus;<br>&nbsp; AttachThreadInput(GetCurrentThreadId,threadld,false);<br>&nbsp; if focushld&lt;&gt;0 then<br>&nbsp; begin<br>&nbsp; &nbsp; for i:=1 to length(Mstr) do<br>&nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; Sstr:=Mstr;<br>&nbsp; &nbsp; &nbsp; CharCode:=ord(Sstr[1]);<br>&nbsp; &nbsp; &nbsp; if length(Sstr)&gt;1 then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharCode:=CharCode shl 8+ord(Sstr[2]);<br>&nbsp; &nbsp; &nbsp; sendmessage(Focushld,WM_IME_CHAR,CharCode,1);<br>&nbsp; &nbsp; &nbsp;end;<br>&nbsp; end;<br>end;<br><br><br>然后sendkey('字符串');<br><br><br>找到窗口句柄代码如下:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var hparent,hbutton:hwnd;//定义句柄变量<br>begin<br>&nbsp; &nbsp; hparent:=findwindow(nil,'对话模式');//得到窗口句柄<br>&nbsp; &nbsp; hbutton:=findwindowex(hparent,0,nil,'送讯息(&amp;S)');//得到窗体的按钮句柄<br>&nbsp; &nbsp; &nbsp; if (hparent=0) or (hbutton=0)<br>&nbsp; &nbsp; &nbsp; then<br>&nbsp; &nbsp; &nbsp; MessageBox(Handle,' 没有找到句柄',' 错误', &nbsp; &nbsp;MB_ICONWARNING)<br>&nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; showmessage('窗体句柄'+inttostr(hpaarent)+'按钮句柄'+inttostr(hbutton));<br>&nbsp; &nbsp; &nbsp; end;<br>end;
 
我曾下了一个QQ轰炸机的源码 ,里面能实现你要的全部功能。它用的是SetWindowText<br>你要的话留下Email;
 
我要!<br>Jackie.China@163.com
 
我也要。3050027@sohu.com
 
邮件已发送<br>请查收
 
哦了,我来了,给我一份,分数给你<br>ypengfei@163.com
 
邮件已发送<br>请查收
 
俺也要一份,不知<br><br>lwcsoft@yahoo.com.cn<br><br>谢谢!
 
俺也要。谢了。luckhacker@163.com
 
是不是又有人想偷QQ了
 
huxhuy@163.net &nbsp;有没有我的份呀???想要。。。。。。。。。
 
也给我一份吧,谢谢!<br>oiwin@fescomail.net
 
后退
顶部