关键问题是如何找到该cmd窗口

解决方案 »

  1.   

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

  2.   

    只要你是用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了。
      

  3.   

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

  4.   

    诚招赴日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:[email protected]
    Tel:0411-84509856/84509836
    Mob:13889497710
      

  5.   


    只要你是用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了。
      

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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

  11.   

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