本人菜鸟,利用delphi7+win7环境,使用Doscommand控件+plink做一个ssh登录服务器程序,这个程序分几步执行(代码如下),遇到一个问题,执行第一段代码顺利,执行第二段代码时不是第一段代码执行窗口内输入字符,而是又打开一个窗口。程序执行后,在任务管理器中可以看到8个plink进程和8个conhost控制台窗口主机,等于打开8个窗口。若是将第一行更换为s:='cmd /c putty -load 123 -pw 111111 [email protected]',可以看到确实是打开了8个窗口,并不是在一个窗口下连续执行。请教各位老师,如何在同一个窗口内(也就是第一段代码生成的窗口内)不断输入字符来执行程序。 //第1步 登录,登录成功后进入菜单选项
s:='plink -ssh -pw 111111 [email protected]';//ssh 默认端口22
memo1.Lines.Clear;
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
Doscommand1.CommandLine :=s;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第2步 选择菜单 按 1
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第3步 输入IP,按IP查询设备
memo1.Lines.Clear;
s:='/i:10.10.15.26';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第4步 选择要登录的设备 按 1
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第5步 命令选项,按 1 ,自动进入telnet(端口23)
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第5步 命令选项,按 1 ,自动进入telnet(端口23)
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第6步 输入telnet用户名
memo1.Lines.Clear;
s:='www';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第7步 输入telnet 密码
memo1.Lines.Clear;
s:='123456';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第8步 输入telnet 命令
memo1.Lines.Clear;
s:='show mac';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
s:='plink -ssh -pw 111111 [email protected]';//ssh 默认端口22
memo1.Lines.Clear;
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
Doscommand1.CommandLine :=s;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第2步 选择菜单 按 1
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第3步 输入IP,按IP查询设备
memo1.Lines.Clear;
s:='/i:10.10.15.26';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第4步 选择要登录的设备 按 1
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第5步 命令选项,按 1 ,自动进入telnet(端口23)
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第5步 命令选项,按 1 ,自动进入telnet(端口23)
memo1.Lines.Clear;
s:='1';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第6步 输入telnet用户名
memo1.Lines.Clear;
s:='www';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第7步 输入telnet 密码
memo1.Lines.Clear;
s:='123456';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
//第8步 输入telnet 命令
memo1.Lines.Clear;
s:='show mac';
memo1.Lines.Add('当前命令 '+s+' 返回结果');
memo1.Lines.Add('');
DosCommand1.SendLine(s,true) ;
Doscommand1.OutputLines :=Memo1.Lines;
DosCommand1.Execute;
winexec('putty -load 123 -pw 111111 [email protected]',sw_hide);
h:=findwindow(nil,'123');
s:='1';
for i:=1 to length(s) do begin
SetForegroundWindow(h);
SwitchToThisWindow(h,true);
MyKeyPress(s[i]);
end;
keybd_event(13,0,0,0);
keybd_event(13,0,KEYEVENTF_KEYUP,0); 有好的办法请各位告知 谢谢