关于SendMessage,进来讨论……(在线等待)(100分)

  • 主题发起人 主题发起人 crazycock
  • 开始时间 开始时间
C

crazycock

Unregistered / Unconfirmed
GUEST, unregistred user!
声明:我已经查询过论坛中关于SendMessage的帖子了,谢绝“到论坛里搜索,答案一大堆……”<br>问题:<br>(1)往另外的一个程序SendMessage(FindWindow(),WM_CHAR,0,0),这里的WM_CHAR和WM_KEYDOWN、WM_SETTEST有什么区别?<br>(2)请你做个试验,打开我的电脑,打开C盘,把焦点留在地址栏,这个时候地址栏里的内容应该是“C:/”,标题栏也应该是“C:/”,然后你用Delphi写个程序,往地址栏填写一个字符串,看能否填写进去?如何填写?
 
地址栏好像并不能用findwindow找到句柄(不知是不是我记错了,没实际做过)
 
打开的那个窗口的句柄确实找到了,如果你发WM_Close,能关闭那个窗口的。<br>我的问题是,如果焦点是在地址栏的,我在SendMessage(WM_Char)之前,先把窗口<br>BringWindowToTop(),然后SendMessage(WM_Char),结果地址栏(可以输入文字的呀~)得不到内容。
 
你FindWindow得到的只是IE的窗口,而不是地址栏的句柄,当然无效了。
 
我如果朝IE的窗口发送WM_KEYDOWN,他应该可以接收到的呀。
 
用以下的方法可以一直找到地址栏,我试过,成功了,如果你有SPY++,你看一下就知道了。<br>var<br>&nbsp; hFind:HWND;<br>begin<br>&nbsp; hFind:=Windows.FindWindow(0,'C:/');<br>&nbsp; if HFind&lt;&gt;0 then begin<br>&nbsp; &nbsp; hFind:=FindWindowEx(hFind,0,'WorkerW',0);<br>&nbsp; &nbsp; if HFind&lt;&gt;0 then begin<br>&nbsp; &nbsp; &nbsp; hFind:=FindWindowEx(hFind,0,'ReBarWindow32',0);<br>&nbsp; &nbsp; &nbsp; if HFind&lt;&gt;0 then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; hFind:=FindWindowEx(hFind,0,'ComboBoxEx32',0);<br>&nbsp; &nbsp; &nbsp; &nbsp; if HFind&lt;&gt;0 then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hFind:=FindWindowEx(hFind,0,'ComboBox',0);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if HFind&lt;&gt;0 then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hFind:=FindWindowEx(hFind,0,'Edit',0);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SendMessage(hFind,WM_SETTEXT,0,Integer(PCHAR('test')));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;
 
你是用什么工具找他们名字的?
 
SPY++,Visual Studio 自带的。 Delphi也有,叫WinSight
 
VC里面带的Spy++吧。
 
如果发KEYDOWN那种消息的话,得用postmessage,不然没用
 
sgzc收到请来<br><br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1988180<br><br>拿分。
 
后退
顶部