浏览 5104 次
锁定老帖子 主题:java调用cmd命令,如何模拟输入Y键
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-10-24
keytool -import -alias publiccert -file D:\cert.cer -keystore D:\publicCerts.store -storepass publicstore123 下载cert.cer:http://dl.iteye.com/topics/download/fea5c7ae-79f0-3c29-ab44-a042187ede42 用java程序调用上面的命令 public static String exec(String cmd) { StringBuffer sb1; StringBuffer sb2; sb1 = new StringBuffer(); sb2 = new StringBuffer(); String temp1 = ""; String temp2 = ""; Runtime rt = Runtime.getRuntime(); try { System.out.println(cmd); Process p = rt.exec(cmd); BufferedReader bufferedReader1 = new BufferedReader( new InputStreamReader(p.getInputStream(),"GBK")); BufferedReader bufferedReader2 = new BufferedReader( new InputStreamReader(p.getErrorStream())); while ((temp1 = bufferedReader1.readLine()) != null) { sb1.append(temp1); System.out.println(temp1); } while ((temp2 = bufferedReader2.readLine()) != null) { sb2.append(temp2); System.out.println(temp2); } p.waitFor(); return sb1.toString(); } catch (Exception e) { e.printStackTrace(); } return sb1.toString(); } 程序不能执行完,在cmd窗口输入命令,需要输入“Y”才能走下去 网上一般回复 System.in.read读取输入即可,判断得到的是否为需要的内容. 代码如何实现? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-10-24
sleep 2000 之后再打 y
|
|
返回顶楼 | |
发表时间:2012-10-25
CS程序里一般用SendMessage来模拟按键
做一个dll,在java里jni调用可以不? 偶只知道这一种方法,java里面可以根据窗口句柄发送消息不?知道的说下 |
|
返回顶楼 | |
发表时间:2012-10-26
获得Process的outputStream然后写入y试试...
|
|
返回顶楼 | |
发表时间:2012-10-26
使用echo
脚本为: cmd /C echo Y | keytool ..................... |
|
返回顶楼 | |
发表时间:2012-10-27
public static void pressKey(Robot robot, int keyvalue) {
robot.keyPress(keyvalue); robot.keyRelease(keyvalue); } public static void pressKeyWithShift(Robot robot, int keyvalue) { robot.keyPress(KeyEvent.VK_SHIFT); robot.keyPress(keyvalue); robot.keyRelease(keyvalue); robot.keyRelease(KeyEvent.VK_SHIFT); } public static void main(String[] args) { try { Robot robot = new Robot(); Runtime.getRuntime().exec("notepad"); // For linux. // Runtime.getRuntime().exec("gedit"); // 定义5秒的延迟以便你打开notepad 哈哈 // Robot 开始写 robot.delay(3000); for (int i = 0; i < 100; i++) { pressKeyWithShift(robot, KeyEvent.VK_H); pressKey(robot, KeyEvent.VK_I); pressKey(robot, KeyEvent.VK_SPACE); // pressKeyWithShift(robot, KeyEvent.VK_H); pressKeyWithShift(robot, KeyEvent.VK_I); pressKey(robot, KeyEvent.VK_SPACE); pressKey(robot, KeyEvent.VK_A); pressKey(robot, KeyEvent.VK_M); } // closeApplication(robot); // robot.keyPress(KeyEvent.VK_SPACE); } catch (AWTException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } |
|
返回顶楼 | |
发表时间:2012-10-27
yy629 写道 使用echo
脚本为: cmd /C echo Y | keytool ..................... 命令行前加 echo Y | 即可 echo Y | keytool -import -alias publiccert -file D:\cert.cer -keystore D:\publicCerts.store -storepass publicstore123 |
|
返回顶楼 | |