0

ビデオ ゲームのようなプログラムを Java で実行し、Java で実行するすべてを出力させたいのですが、これは可能ですか? すべてを明確にするために、ゲームが何をしているかという観点から、ゲームの出力を確認したいと思います。プログラム言語が異なるため、完全に理解できない場合があることを理解しています。ゲームをハッキングしてコードを取得するために、gameshark/gamegenie を使用したことを覚えている人はいますか? それは私がやりたいことのようなものです。

これまでランタイムとプロセスビルダーを試しましたが、何も出力されません。

以下は私のコードです:

public class ProcessW {
     public static void main(String[] args) throws IOException {
         String command = "...my game...";

         ProcessBuilder pb = new ProcessBuilder(command); 
         pb.redirectErrorStream(true); 
         Process proc = pb.start(); 

         java.io.InputStream is = proc.getInputStream(); 
         InputStreamReader isr = new InputStreamReader(is); 
         BufferedReader br = new BufferedReader(isr); 

         String line; 
         int exit = -1; 

         while ((line = br.readLine()) != null) { 
             // Outputs your process execution 
             System.out.println(line); 
             try { 
                 exit = proc.exitValue(); 
                 if (exit == 0)  { 
                     // WinProcess finished 
                 } 
             } catch (IllegalThreadStateException t) { 
                 // The process has not yet finished.  
                 // Should we stop it? 
                 //if (processMustStop()) 
                     // processMustStop can return true  
                     // after time out, for example. 
                     proc.destroy(); 
             } 
         } 
     }
}
4

1 に答える 1

1

Java を使用せずにゲームを開始したときにコンソールに何かが出力される場合、問題はバッファリングです。Java は、4096 バイトの出力が書き込まれた後にのみ、ゲームの出力を確認します。

これを防ぐ唯一の方法は、ゲームのコードをstdout.flush()各行の後に呼び出す (または同様の) ように変更して、OS が出力を Java プロセスに送信するようにすることです。

于 2012-09-25T15:08:04.260 に答える