CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

需要用java在一个指定的cmd窗口中输入一个字母,例如“y”,再回车,分管够

楼主lamyoyo(爱虫)2006-09-11 16:07:42 在 Java / J2SE / 扩展类 提问

关键问题是如何找到该cmd窗口  
  问题点数:100、回复次数:18Top

1 楼zdsdiablo(十分钟年华老去)回复于 2006-09-11 16:53:51 得分 0

要指定的窗口么,那最好创建的时候留着那个引用Top

2 楼lamyoyo(爱虫)回复于 2006-09-11 17:13:03 得分 0

cmd窗口不是该程序创建的,也许能通过cmd窗口的标题找到该窗口,或者找到该cmd窗口的进程号,然后继续Top

3 楼kinsey0514(春天的老黄牛)回复于 2006-09-11 19:49:01 得分 0

UPTop

4 楼terry_yip(我只回答引起我思考的问题)回复于 2006-09-11 23:36:26 得分 100

只要你是用java来调用CMD的,就可以找到cmd窗口。我花了半个小时帮你写了个例子。  
   
  ----------------------------------------------------------  
   
  这个class,如果在屏幕上输入y,就马上把E:\\WinReg.exe另存为C:\\ok.exe,请在E:放一个WinReg.exe,并把下面的文件编译后的TScreenInput.class,放到E:根目录下。  
   
  import   java.io.File;  
  import   java.io.InputStream;  
   
   
  public   class   TScreenInput  
  {  
  public   static   void   main(String[]   args)   throws   Exception  
  {  
  InputStream   in=null;  
  while(true)  
  {        
  in=System.in;  
  char   c=(char)in.read();  
  if(c=='y')  
  {  
  File   f=new   File("E:\\WinReg.exe");  
  f.renameTo(new   File("C:\\ok.exe"));  
  System.out.println("copy   complete!!");  
  break;  
  }  
  }  
  }  
  }  
   
   
  ------------------------------------------------------------------  
   
  下面这个文件是调用cmd窗口,并执行"java   -classpath   E:\\   TScreenInput"来运行TScreenInput,并输入'Y',让TScreenInput来执行文件另存为的操作。  
   
   
  import   java.io.BufferedOutputStream;  
  import   java.io.IOException;  
  import   java.io.InputStream;  
  import   java.io.OutputStream;  
   
  public   class   TTest  
  {  
  public   static   void   main(String[]   args)   throws   IOException  
  {  
  Process   pro   =   Runtime.getRuntime().exec("cmd.exe   /c   java   -classpath   E:\\   TScreenInput");  
                                      InputStream   is   =   pro.getErrorStream();  
  InputStream   is1=pro.getInputStream();  
   
                                      //下面五行为关键语句  
                                      OutputStream   os=pro.getOutputStream();  
                                      BufferedOutputStream   bos=new   BufferedOutputStream(os);  
  byte   b2[]=new   byte[]{(byte)'y',(byte)'\n'};  
  bos.write(b2);  
  bos.flush();  
   
  byte   b;  
  while   ((b   =   (byte)   is.read())   !=   -1)    
  {  
        //输出正常输出的信息  
  System.out.print((char)b);  
  }  
   
  while   ((b   =   (byte)   is1.read())   !=   -1)    
  {  
  //输出出错信息  
  System.out.print((char)b);  
  }  
   
  }  
   
  }  
   
   
   
  执行TTest,   接着,你就可以看到E:\\WinReg.exe被复制到C:下,并改名为ok.exe了。  
  Top

5 楼emin_lee(emin)回复于 2006-09-12 08:59:55 得分 0

mark!Top

6 楼YYAAZZ()回复于 2006-09-12 10:22:07 得分 0

IES是大连IT猎头行业强势企业,致力于IT行业内的猎头服务。公司客户群主要是世界500强IT企业及国内优秀的大型软件研发及外包企业。公司在同行业中有良好的信誉和口碑,在众多500强客户中取得高度评价。现受委托企业高薪招聘以下职位:  
  ●世界500强IT企业(全日资企业,自主研发,新企业发展空间大,工作地点:大连)  
  *   java   /   VB方向(其他语言也可)  
  职位:SE(与其他公司PL/PM相当)  
  人数:不限  
  学历:大学本科以上  
  外语:英语四级、日语国际1级相当  
  经验:具有3年以上开发管理经验,要求日语口语流利,优秀的沟通和协调能力,了解日本商务礼仪及日本文化  
  内容:直接归属开发部长领导,到日本本社带回项目,并带领手下完成项目。  
  相关待遇:  
  1 基本工资     7000   –   10000   RMB  
  2 5险1金   (40%住房公积金:个人15%     公司25%)  
  3 年终奖金   (2月工资)  
  4 交通补贴   (100/月)  
  5 午餐补贴   (150/月)  
  6 电话补贴   (300/月)  
  7 取暖费         (   100/月   )  
  8 外语补贴   (   有等级证书,依照等级不等   )  
  9 带薪休假   (   7日   /   年   ,最多15日   /   年   )  
  *       加班很少!  
   
  *java   方向  
  职位:PG    
  人数:不限  
  学历:大学本科以上  
  外语:日语国际3级  
  经验:具有至少1年以上Java对日项目工作经验,并有Web,Java,Struts相关工作经验,能够充分理解式样。  
  相关待遇:  
  1     5险1金   (40%住房公积金:个人15%     公司25%)  
  2     加班费       (按照国家规定给与相应加班费)  
  3     年终奖金   (2月工资)  
  4     带薪休假   (   7日   /   年   ,最多15日   /   年   )  
  5     交通补贴   (100/月)  
  6     午餐补贴   (150/月)  
  7   取暖费         (   100/月   )  
  8     外语补贴   (   有等级证书,依照等级不等   )  
   
  诚招赴日SE(10人)  
   
  培养方向:常驻日本从事软件开发工作,熟悉日本客户工作习惯、掌握客户的软件开发管理。有机会做真正的对日软件开发的桥梁和管理者。  
   
  日语要求:能够直接和日本客户进行作业会话,对日开发经验2年以上(如果日语非常好1年也可)。  
  技术要求:1.精通1门以上(包括1门)开发语言。会.net、Java、C语言者优先。  
                  2.精通1种以上(包括1种)数据库。  
                      有项目管理经验者优先。  
  学历要求:大专以上(包括大专),如果是自学考试的情况下,需要有学位证书。  
  工作地点:东京、关东地区、名古屋、京都等  
   
  待遇情况:月工资:25-40万日元  
  加班费:     每天平均勤务8小时以上加班费为1800日元以上/H。例:当月勤务时间为260小时,工作日为20天的情况下,加班费为:18万日元。  
  年休假:     10天以上  
  保     险:       日本和国内(当将个人档案调到大连本社时)都有保险  
  其     他:       每年2次员工旅游(目前组织过的旅游地:冲绳2次、韩国1次、今年到塞班)  
                        员工聚会平均1.5个月一次(公司报销路费和会餐费)。  
                      报销在日本业余时间学习日语的费用等  
   
   
  ●世界500强IT企业(全日资企业,自主研发,非外包,工作地点:大连)  
    java   方向  
  职位:应用软件PL   /   PM  
  人数:2人  
  学历:大学本科以上  
  外语:英语四级、日语国际二级  
  经验:具有3/5年以上Web,Java,Struts相关工作经验,要求担当过PL或Sub-Leader  
   
  C   /   C++   方向  
  职位:应用软件PL   /   PM   高级程序员  
  人数:8人  
  学历:大学本科以上  
  外语:英语四级、日语国际二级  
  经验:具有3/5年以上C   /   C++相关工作经验,要求担当过PL或Sub-Leader  
  相关待遇:  
  1 5险1金(40%住房公积金:个人15%     公司25%)  
  2 加班费(按照国家规定给与相应加班费)  
  3 每年年终奖(3月工资左右)  
  4 职务津贴   (PL:1000   Spl:500)  
  5 每年一次调薪   (按百分比,工资越高调动越大)  
  6 取暖费   (   国家规定   )  
  7     带薪休假  
   
  ● 世界500强IT企业(全日资企业,外包,工作地点:大连   /   东京)  
  月薪不低于30万日元  
      java   方向  
  职位:SE    
  人数:不限  
  学历:大学本科以上  
  外语:日语国际二级相当  
  经验:具有至少1年以上Java对日项目相关工作经验  
   
  C   /   C++   方向  
  职位:SE  
  人数:不限  
  学历:大学本科以上  
  外语:日语国际二级相当  
  经验:具有至少1年以上C   /   C++对日项目相关工作经验  
   
   
  .NET   方向  
  职位:SE  
  人数:不限  
  学历:大学本科以上  
  外语:日语国际二级相当  
  经验:具有至少1年以上.net对日项目相关工作经验  
   
  人力资源顾问:文先生  
  Email:wennansong@gmail.com  
  Tel:0411-84509856/84509836  
  Mob:13889497710  
   
  Top

7 楼whycloud(云木)回复于 2006-09-12 13:22:37 得分 0

System.inTop

8 楼DeepNightTwo(深夜两点)回复于 2006-09-12 15:07:55 得分 0

lz的问题问的很模糊阿,是要你自己打开一个cmd然后输入y\n呢,还是说是在已经打开的cmd窗口中寻找一个合适的窗口然后输入y\n呢?Top

9 楼YYAAZZ()回复于 2006-09-12 15:22:03 得分 0

诚招赴日SE(10人)  
   
  培养方向:常驻日本从事软件开发工作,熟悉日本客户工作习惯、掌握客户的软件开发管理。有机会做真正的对日软件开发的桥梁和管理者。  
   
  日语要求:能够直接和日本客户进行作业会话,对日开发经验2年以上(如果日语非常好1年也可)。  
  技术要求:1.精通1门以上(包括1门)开发语言。会.net、Java、C语言者优先。  
                  2.精通1种以上(包括1种)数据库。  
                      有项目管理经验者优先。  
  学历要求:大专以上(包括大专),如果是自学考试的情况下,需要有学位证书。  
  工作地点:东京、关东地区、名古屋、京都等  
   
  待遇情况:月工资:25-40万日元  
  加班费:     每天平均勤务8小时以上加班费为1800日元以上/H。例:当月勤务时间为260小时,工作日为20天的情况下,加班费为:18万日元。  
  年休假:     10天以上  
  保     险:       日本和国内(当将个人档案调到大连本社时)都有保险  
  其     他:       每年2次员工旅游(目前组织过的旅游地:冲绳2次、韩国1次、今年到塞班)  
                        员工聚会平均1.5个月一次(公司报销路费和会餐费)。  
                      报销在日本业余时间学习日语的费用等  
   
  人力资源顾问:文先生  
  Email:xuehuan830717@hotmail.com  
  Tel:0411-84509856/84509836  
  Mob:13889497710  
   
  Top

10 楼amingo(Atlas 新技术讨论群:6455130(群主))回复于 2006-09-12 23:44:00 得分 0

 
  只要你是用java来调用CMD的,就可以找到cmd窗口。我花了半个小时帮你写了个例子。  
   
  ----------------------------------------------------------  
   
  这个class,如果在屏幕上输入y,就马上把E:\\WinReg.exe另存为C:\\ok.exe,请在E:放一个WinReg.exe,并把下面的文件编译后的TScreenInput.class,放到E:根目录下。  
   
  import   java.io.File;  
  import   java.io.InputStream;  
   
   
  public   class   TScreenInput  
  {  
  public   static   void   main(String[]   args)   throws   Exception  
  {  
  InputStream   in=null;  
  while(true)  
  {        
  in=System.in;  
  char   c=(char)in.read();  
  if(c=='y')  
  {  
  File   f=new   File("E:\\WinReg.exe");  
  f.renameTo(new   File("C:\\ok.exe"));  
  System.out.println("copy   complete!!");  
  break;  
  }  
  }  
  }  
  }  
   
   
  ------------------------------------------------------------------  
   
  下面这个文件是调用cmd窗口,并执行"java   -classpath   E:\\   TScreenInput"来运行TScreenInput,并输入'Y',让TScreenInput来执行文件另存为的操作。  
   
   
  import   java.io.BufferedOutputStream;  
  import   java.io.IOException;  
  import   java.io.InputStream;  
  import   java.io.OutputStream;  
   
  public   class   TTest  
  {  
  public   static   void   main(String[]   args)   throws   IOException  
  {  
  Process   pro   =   Runtime.getRuntime().exec("cmd.exe   /c   java   -classpath   E:\\   TScreenInput");  
                                      InputStream   is   =   pro.getErrorStream();  
  InputStream   is1=pro.getInputStream();  
   
                                      //下面五行为关键语句  
                                      OutputStream   os=pro.getOutputStream();  
                                      BufferedOutputStream   bos=new   BufferedOutputStream(os);  
  byte   b2[]=new   byte[]{(byte)'y',(byte)'\n'};  
  bos.write(b2);  
  bos.flush();  
   
  byte   b;  
  while   ((b   =   (byte)   is.read())   !=   -1)    
  {  
        //输出正常输出的信息  
  System.out.print((char)b);  
  }  
   
  while   ((b   =   (byte)   is1.read())   !=   -1)    
  {  
  //输出出错信息  
  System.out.print((char)b);  
  }  
   
  }  
   
  }  
   
   
   
  执行TTest,   接着,你就可以看到E:\\WinReg.exe被复制到C:下,并改名为ok.exe了。  
   
   
  Top

11 楼lamyoyo(爱虫)回复于 2006-09-14 16:38:00 得分 0

在已经打开的cmd窗口中寻找一个合适的窗口然后输入y\n  
   
  那个程序试过了,非常感谢。但是我的最终需求是:在一个指定的cmd窗口(知道title)中,用程序模拟输入y回车。而且这个y必须能被先前运行的程序TScreenInput识别,并让TScreenInput做出正确的反应  
  Top

12 楼amozon(SUNNY是老婆,JAVA是情人)回复于 2006-09-14 17:09:13 得分 0

操作cmd窗口对象不建议lz用javaTop

13 楼theforever(碧海情天)回复于 2006-09-14 17:51:26 得分 0

找找JAVA进程管理方面的资料看看Top

14 楼lamyoyo(爱虫)回复于 2006-09-14 18:05:05 得分 0

如果能用其他语言写一个程序模拟,在当前激活cmd窗口中键入y回车也行啊,然后用java调用执行呗。进程没问题,关键是我用java   Robot写的东西只在java自己的窗口中敲入y,郁闷。Top

15 楼chinagaici(山沟里跑出来的穷小子 )回复于 2006-09-15 13:11:08 得分 0

这个你必须用C++写个DLL去查找窗口和操作窗口,然后在java中用jni来连接这个dll,   网上很多关于查找窗口的C++代码,   在看一下在java中怎么进行jni操作Top

16 楼terry_yip(我只回答引起我思考的问题)回复于 2006-09-17 17:02:07 得分 0

to   amingo:   你复制我的回复,意欲何为??  
   
  Top

17 楼gongzhy(2369)回复于 2006-09-18 08:52:46 得分 0

顶一下Top

18 楼logonin(生的伟大,活的憋屈!)回复于 2006-09-18 17:37:11 得分 0

尊重别人的劳动成果!Top

相关问题

关键词

得分解答快速导航

  • 帖主:lamyoyo
  • terry_yip

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo