0

私からの入力を受け取り、別のアプリケーション ( Windows Calculator / "calc" ) を開き、そのアプリケーションに入力を供給する小さな Java アプリケーションを作成しようとしています。

現時点では、単純な Windows Calculator に対してこれを実行しようとしていますが、従来の手段では機能しないようです。

public Feeder(String processID) throws Exception {
    rt = Runtime.getRuntime();
    proc = rt.exec("calc");

    input = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
}

public void sendCommand(int cmd) throws Exception {
    input.write(cmd);
    input.flush();
    input.close();

    proc.waitFor();
}

(部分的に別の情報源から取得、著者によるクレジット)

ただし、別のコマンドライン プロセスに送信する上記のコードとは異なり、WinCalc はグラフィカルです。リバースエンジニアリングのようなあらゆる種類の問題を経ることなく、入力を送信することはまだ可能ですか?

4

1 に答える 1

3

java.awt.Robot を使用して、現在アクティブなウィンドウにテキストを送信し、マウスを移動してクリックすることができます。より高度なメッセージ パッシングが必要な場合は、JNI または (私の推奨) JNA が必要です。

その他のオプションには、アプリケーションを AutoHotKey または AutoIt V3 に結び付けることが含まれます。

私自身、JNA、Robot、および AutoIt を組み合わせて、その状況に最適なアプリケーションを使用して、他のアプリケーションを実行することに成功しました。

于 2012-12-21T23:21:11.433 に答える