私は、ランタイムEXECを使用してコマンドを呼び出して、explorer.exeの現在のメモリ使用量を取得しているコードを持っています。次に、その行全体を文字列変数に変換します。この文字列が変更されているかどうかを確認できます。これは、数字であるメモリ部分が時間とともに変化するかどうかをチェックするためです。目的は、エクスプローラが使用されているかどうかを確認することです。メモリの使用が変更されていない限り、エクスプローラは使用されていませんが、使用されている場合は使用中であることを意味します。文字列の値が変化するかどうかをチェック
コマンドの通常の出力はexplorer.exe 776 console 1 35,804K
で、最後の部分35,804K
がメモリ出力です。これは、監視または追跡したい部分です。
私が現在持っているコードは、下記のものです。当初は、Timerを実装して、常に実行するようにしました。
public class ReadProcser {
static String runTVal = "";
public static void main(String[] args) {
try {
functionReadRegular();
} finally {
if (runTVal != runTVal)
{
System.out.println("Changed");
}
}
}
static void functionReadRegular(){
try {
String process;
Process p = Runtime.getRuntime().exec("cmd /c tasklist /FI \"IMAGENAME eq explorer.exe\"");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((process = input.readLine()) != null) {
runTVal = process;
System.out.println(runTVal);
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}
}
私は、文字列が変更されているかどうかを確認する現在の方法では動作しないことを承知しています。私は何をしようとしているのかをもっと見ることができます。現在、それは最初から価値がないので、比較するものはありません。しかし、それは私が達成しようとしていることを示すより多くです。私は文字列が変更されたかどうかを確認する特定のListener
を持っていることについて何かを見ましたが、実際にこのような場合にどのように実際に使用するかはわかりません。
コードで十分に見えない場合は、基本的には文字列runTVal
を取得してから保存してからもう一度コードを実行して新しい値をrunTVal
として取得してから新しい。
あなたの前提は一般的にはうまくいくかもしれませんが、何らかの理由でExplorerのメモリ使用量がまだ使用されているにもかかわらず変更されない場合、どのように処理する予定ですか? –
文字列が不変で、文字列を比較する方法も学ぶ –