向已经被调用的*.EXE程序的Edit传入数据与使用鼠标点击命令(50分)

  • 主题发起人 主题发起人 江上游者
  • 开始时间 开始时间

江上游者

Unregistered / Unconfirmed
GUEST, unregistred user!
被调用的*.exe程序已经使用<br> &nbsp; &nbsp; &nbsp;ShellExecute(Handle,'open','E:/Program Files/*.exe,,nil,nil,SW_SHOWNORMAL);<br>语句打开*.exe程序,主窗体的句柄使用FindWindow找到<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hw := FindWindow('XX', nil);//'XX'窗体标题<br>现在需要把数据送入edit文本框,同时需要使用鼠标点击Label或者Button命令,使程序继续运行。<br><br> &nbsp; &nbsp;不知使用什么方法?
 
得到句柄GetWindow<br>发送消息sendmessage
 
发送消息sendmessage与发送命令的方法
 
无法将的数据发送到(赋值到)*.exe中,使用发送消息sendmessage函数,在使用sendmessage函数的前、后,需要使用什么函数(语句)。
 
1。得到那个Edit和Button的各自的handle<br>2。SendMessage--&gt;Edit,模拟输入<br>3。SendMessage--&gt;Button,模拟鼠标按下
 
SendMessage--&gt;Edit,模拟输入,得到handle后,主要是无法输入到Edit,能否给讲得详细些。<br>在窗体中的位置我也找到了(找到鼠标位子GetCursorpos,设定鼠标位子SetCursorpos),也没有办法输入到Edit。
 
首先遍历程序中的控件,并在遍历时打下记号,怎么打记号呢,就是设一个循环,每出现一个控件,就加一个序号,出现第一个为1,出现第二个为2,.......这样,记下你所要传递数据(要转成字符串)的控件的序号,然后:if n=x then SendMessage(),然后,移动鼠标到要点击的按钮控件的位置,模拟点击。完成。
 
另外就是,一定要在EXE程序窗体完全显示后才能发进去,可以在ShellExecute后设置SLEEP(),只要一点点时间。等它运行。
 
可以获得那个Edit和Button的各自的handle,但是<br>SendMessage--&gt;Button,模拟鼠标按下可以起作用,<br>SendMessage--&gt;Edit,模拟输入不起作用,键盘输入可以起作用,<br>还有什么方法可以使用。
 
把SendMessage换成PostMessage试试
 
也许不能用Edit的handle,而要在遍历控件时的序号,
 
SendMessage--&gt;Edit,模拟输入不起作用,键盘输入可以起作用,使用PostMessage--&gt;Edit不起作用。<br>怎么将*.exe中的Edit的数据取回来。
 
不知道为什么Edit传送数据后,*.exe程序没有退出,再次启用时句柄丢失,使用<br>hw:= Findwindow(nil,XX),寻找到了主窗体的句柄,句柄数值为零。传送数据时<br>激活过窗体,窗体句柄丢失,找回句柄的方法或者函数。
 
先用DELPHI自带的WinSight32查出类名,把类名和窗体标题文本都填进去找窗体句柄。“句柄数值为零”说明没有发现这个窗体,也许是你的窗体文本写错了,可惜我的代码没带身边。下面的链接也许对你有用:<br>http://www.borlandbbs.cn/dispbbs.asp?boardid=4&id=176<br>你深夜1:41:12还在写程序吗?也够用功的。
 
误人子弟啊。。。。。,PostMessage,SendMessage是不能传送字符串到Edit的,顶多传送一个字符<br>正确的办法:<br>1.找到 app handle<br>2.找到 edit handle<br>3.SetWindowText(edithandle,'abc')
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部