如何用DELPHI向另一窗口(PB)的编辑框发送字符串的问题?请熟悉DELPHI,POWERBUILDER,WINAPI的大侠帮忙。(200分)

  • 主题发起人 主题发起人 goubo
  • 开始时间 开始时间
G

goubo

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI程序中我使用了SendMessage发WM_SETTEXT消息向PB程序窗口的编辑框发送字符串,<br>然后在发WM_KEYDOWN消息发模拟回车键,通过SPY++发现消息已经发送到了目标编辑框,<br>但是目标的PB程序根本不处理,而且我发现如果在目标编辑框首先输入一些内容(如"123"),<br>再用我的程序发送”456"和回车,那目标程序就会响应,不过它响应的内容是”123“,而不是<br>”456“,经过询问,在目标窗口的编辑框中,PB使用的事件是MODIFY,在这个事件中它的<br>程序作处理。各位大侠,我对WINAPI一点也不熟,出出主意吧???
 
这样的例子好像很多,但是我没有PB所以无法测试,但原理应该一样。<br>给你的链接看看,在本论坛搜索一下,毕竟这个问题太多人问了。<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=819474
 
pb也支持自定义消息,你应该用自定义的消息去发送和处理。<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=958559
 
FindWindowEx(DlgHwnd,0,'Edit',nil);//找到edit句柄
 
我好想看过那位大侠写了一个发QQ消息的例子<br>转载供参考<br>var<br>&nbsp; Handle: Integer;<br>&nbsp; tmpHandle,tmphandle1: Integer;<br><br>&nbsp; rchedt:trichedit;<br>&nbsp;begin<br><br>&nbsp; rchedt:=TrichEdit(PopupMenu1.PopupComponent);<br><br><br>&nbsp; Handle := FindWindow(nil,'对话模式');<br>&nbsp; if Handle&lt;&gt;0 then<br>&nbsp; begin<br>&nbsp; &nbsp; tmpHandle := Handle;<br>&nbsp; &nbsp; tmpHandle1 := Handle;<br>&nbsp; &nbsp; EnumChildWindows(Handle,@GetButtonHandle,Integer(@Handle));<br>&nbsp; &nbsp; FButtonHandle := Handle;<br><br><br>&nbsp; &nbsp; EnumChildWindows(tmpHandle,@GetEditHandle,Integer(@tmpHandle));<br>&nbsp; &nbsp; FTextHandle := tmpHandle;<br><br>&nbsp; &nbsp; //showwindow(tmpHandle1,SW_HIDE);<br>&nbsp; &nbsp; //setwindowlong(tmpHandle1,GWL_EXSTYLE,WS_EX_TOOLWINDOW);<br><br><br>&nbsp; end;<br>&nbsp; SendMessage(FTextHandle,WM_SETTEXT,0,Integer(pchar(rchedt.text)));<br>&nbsp; SendMessage(FButtonHandle,WM_LBUTTONDOWN,0,0);<br>&nbsp; SendMessage(FButtonHandle,WM_LBUTTONUP,0,0);<br>&nbsp; rchedt.clear;<br>end;<br><br>
 
发消息不行可以换一个想法, 用API keybd_event来模拟键盘输入<br>有个限制就是那个应用程序必须是激活的,然后你找到那个EDIT的位置就可以了。
 
唉,人气不足,问题还是没有解决,把分数分了吧。savenight没有给出具体的方法,<br>如果给了,分就是你的了。anti_ant给了代码,谢了。
 
后退
顶部