Lập trình Java: gọi một exe từ Java và truyền các tham số


87

Tôi đang tìm ra một cơ chế để gọi một exe từ Java và truyền vào các tham số cụ thể. Làm thế nào tôi có thể làm được?

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
  System.out.println(line);
}

Mã trước đó hoạt động. Nhưng tôi không thể chuyển các tham số vào . MyExe.exe chấp nhận các tham số. Một vấn đề khác là khi PathToExe có khoảng trống. ProcessBuilder dường như không hoạt động. Ví dụ:

C:\\User\\My applications\\MyExe.exe

Cảm ơn bạn.


1
new ProcessBuilder ("C: \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Prince John Wesley


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();Đoạn mã này có giá trị cho các đối số tùy chọn không? Ví dụ -h là viết tắt của sự giúp đỡ, v.v.
Lorenzo B

những gì về đường dẫn với khoảng trống? Cám ơn bạn một lần nữa. Rất hữu ích !!
Lorenzo B

3
@Flex: Một đối số là một đối số. Các ý nghĩa của cuộc tranh luận là hoàn toàn tùy thuộc vào chương trình được chạy. Một chương trình có thể diễn giải -hlà một tùy chọn, một chương trình khác có thể hiểu nó là một tên tệp. ProcessBuilderkhông biết và cũng không quan tâm. Re đường dẫn bằng dấu cách: Đó là một trong những lý do mà các đối số được đưa ra dưới dạng chuỗi rời rạc thay vì (giả sử) danh sách được phân cách bằng dấu cách như trên dòng lệnh và trong một số API kém. Bỏ khoảng trống vào đó, toàn bộ đường dẫn chương trình sẽ được trao cho Hệ điều hành để xử lý khi thích hợp.
TJ Crowder

Câu trả lời:




0
import java.io.IOException;
import java.lang.ProcessBuilder;

public class handlingexe {
    public static void main(String[] args) throws IOException {
        ProcessBuilder p = new ProcessBuilder();
        System.out.println("Started EXE");
        p.command("C:\\Users\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");   

        p.start();
        System.out.println("Started EXE"); 
    }
}

1
Đặt args ở đâu?
Mert Serimer

1
@Shikha vui lòng xem qua câu hỏi
Anand j. Kadhi

0

Dưới đây phù hợp với tôi nếu exe của bạn phụ thuộc vào một số dll hoặc một số phụ thuộc nhất định thì bạn cần đặt đường dẫn thư mục. Như đã đề cập bên dưới exePath có nghĩa là thư mục nơi exe được đặt cùng với các tệp tham chiếu của nó.

Ứng dụng Exe tạo bất kỳ tệp tạm thời nào để nó sẽ tạo trong thư mục được đề cập trong processBuilder.directory (...)

**

ProcessBuilder processBuilder = new ProcessBuilder(arguments);
processBuilder.redirectOutput(Redirect.PIPE);
processBuilder.directory(new File(exePath));
process = processBuilder.start();
int waitFlag = process.waitFor();// Wait to finish application execution.
if (waitFlag == 0) {
...
 int returnVal = process.exitValue();
} 

**

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.