因为启动进程需要一些时间(哪怕是几十微秒),而代码的执行速度是非常快的,此时可能已经执行完了查找窗口的代码。所以,WinExec(Pchar('C:\B.exe'),0)以后,适当延时一些时间,比如1秒左右,应该就会好一点。延时可以这样:
var
dwTickCount: DWORD;
begin
WinExec('C:\B.exe', 0);
// 延时1秒
dwTickCount := GetTickCount;
while GetTickCount() < dwTickCount + 1000 do
Application.ProcessMessages;
// 继续下一步
FHwnd:=FindWindow(nil,'系统登录');
...
end;
我顶你个肺
that sound great!
Very Good
我调用一般的两层程序,问题是不存在的
调用一个三层的程序,就出现上述问题
延时1秒后,问题解决
Thank you! 非常感谢老妖的再次指点!
good
顶