用DLEPHI控制VB的程序,遇到了问题,请大家指点迷律。
因为工作需要,我要用DELPHI来编程实现操作另一VB程序的目的(VB程序只有可执行文件)
我要实现的就是先打开VB程序,在界面(formA)上单击一个按钮,弹出另外一个界面(formB),再在上面的输入框中输入一些信息,然后再单击一个按键即可。
我用工具查看了一下,VB的FORM类是ThunderRT6FormDC(两个FORM都是一样了)
我的主要程序如下:
回调函数:
function enumuserproc(hwnd:integer;lparam:longint):boolean;stdcall;
var
buffer:array[0..255] of char;
begin
result:=true;
getwindowtext(hwnd,buffer,256);
if buffer=str then begin
sendmessage(hwnd,wm_lbuttondown,mk_lbutton,0);
sendmessage(hwnd,wm_lbuttonup,mk_lbutton,0);
end;
end;
button中代码:
procedure TForm1.Button1Click(Sender: TObject);
var
hwnd:integer;
begin
hwnd:=findwindow(nil,'资料传输');
if hwnd<>0 then begin
str:='上传设置';//按钮名
enumchildwindows(hwnd,@enumuserproc,0);
end;
hwnd:=findwindow(nil,'设置');
if hwnd<>0 then begin
str:='确定';//按钮名
enumchildwindows(hwnd,@enumuserproc,0);
end;
end;
程序想实现两个FORM上按钮的自动单击。
但是,我在DLEPHI程序上第一次单击按钮后,没有效果,
第二次单击按钮后,VB程序的form2出现,但此时并没有出现单击form2上按钮的效果(form2上的‘确定’按钮,没有被自动单击),delphi的程序就好像死掉一样,不能对其进行任何操作。但只要关闭VB的form2程序,delphi程序又自动恢复正常。
我尝试用delphi作了有两个form的程序作被调用的测试,但结果一切正常。
请问为什么VB的程序我要两次按按钮后才能调用,而且会出现上面所述的问题??????有什么方法可以解决。
问题点数:0、回复次数:0Top



