
Java 特定プロセス名前取得方法について
こんにちわ。
昨日に引続きまた質問させてください。
Javaで特定のプロセス名(OpenOfficeのプロセス名:soffice.exeだったかな?)を取得したいのですが、何か良い方法は無いでしょうか?
環境
eclipse3.5
jdk1.5
jooconverter.jar
openoffice1.4
やりたいこと
・ExcelからPDFにファイル内容を丸ごと変換(jooconverter.jar、openofficeを使用)
・どうやら、openofficeのコネクタを取得しなければ、変換出来ない為Thrad.sleep()で若干とめてます。
・その止めるのを毎回ではなく、1日1回若しくはopenofficeが起動していない時だけにしたいのです。
こんな感じでやりたい
~中略~
// プロセス名取得
String pName = …;
// openofficeが起動しているかのチェック
if (pName.equals("")) {
// openoffice起動
~中略~
// 処理を一旦停止
Thread.sleep(60000);
}
// コネクト接続処理
~中略~
// 変換処理
~中略~
補足
何故プロセスIDではないかというと、ネットで調べたら固定ではなく、毎回変動するようなので名前がいいなーと思いました。
もし、変動ではなく固定にすることが出来るなら、IDも可能です。
どなたか分かる方、ご教授頂けましたら幸いです。
No.2ベストアンサー
- 回答日時:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ProcessGetter {
//プロセス表示コマンド(Windows)
//mainで使うために、やむを得ずのstatic
private final static String PS_COMMAND = "tasklist";
//ProcessBuilderにプロセス表示コマンド登録
//mainで使うために、やむを得ずのstatic
private final static ProcessBuilder psbuilder = new ProcessBuilder(PS_COMMAND);
//mainで使うために、やむを得ずのstatic
private final static List<String> list = new ArrayList<String>();
/*
* 実行中のプロセスを返す
*/
public static List<String> getProcess(){
try {
//コマンド実行
Process p = psbuilder.start();
//コマンドのコンソール表示を受け取る
BufferedReader bufreader = new BufferedReader
(new InputStreamReader(p.getInputStream()));
//ArrayListに突っ込みまくる
while (true) {
String tasks = bufreader.readLine();
list.add(tasks);
//コマンドライン表示終了時にストリームをクローズ
int c = p.getInputStream().read();
if (c == -1) {
p.getInputStream().close();
break;
}
}
return list;
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}finally{
return list;
}
}
public static void main(String[] args) {
List<String> pslist = getProcess();
for(String str : pslist)
{
System.out.println(str);
}
}
}
回答ありがとう御座います。
せっかくサンプルソースを頂いたのですが、リーダに「変な事するな」といわれてしまいました・・・。
また別の機会に試してみたいと思います。
No.3
- 回答日時:
長くなったので分けました
下記に投稿したコードを実行すると、
?C???[?W?? PID ?Z?b?V?????? ?Z?b?V????# ???????g?p??
========================= ======================= =========== ============
ystem Idle Process △△△△△ 0 △Services △△△△△ 0△△△△△△ 24 K
ystem △△△△△ 4△ Services △△△△△ 0 △△△△△△ 5,176 K
mss.exe △△△△△ 456 △Services△△△△△0△△△△△△752 K
↑の実行結果が得られます。(△はスペース)
※文字化け&プロセス名が欠けちゃってますね・・・
実際に使うのであれば、申し訳ありませんが、自力で何とかして下さい。
Unix/Linuxの場合はPS_COMMANDに"ps"を指定して下さい。
あとはsplitするなりなんなりすれば、プロセス名が取得できると思います。
酔った頭でテキトーに書いたサンプルコードですので、
まともに動かなくてもご了承の程お願い致します。
No.1
- 回答日時:
外部プログラムを経由して取得する方法しか知らないわ。
C#とかで取得したものをJavaに渡すといいわ。
VBScriptでもできたかも?
ところで気になったのだけど
実行時にopenofficeが起動していなくても
実行中にopenofficeが起動したらどうなっちゃうのかしら。
回答ありがとう御座います。
外部プログラムですか・・・。
>実行時にopenofficeが起動していなくても
>実行中にopenofficeが起動したらどうなっちゃうのかしら。
これって、どういう事ですかね?
待機させてる間に起動しきれず、次の処理実行中にopenofficeが起動したらってことですかね・・・
上記仮説だとして回答します。
待機させた後に、openofficeのコネクタを接続し、コンバータを取得します。
起動しきれない=コネクタ接続できない為、エラーで処理が異常終了するようにしてます。
起動しきれない=待機時間が短いって事だと思うので、設定ファイルの待機時間を増やして再実行(ユーザが)という形を取りました。
こういう感じにって指示を頂いたので。(リーダから)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- CPU・メモリ・マザーボード BIOSアップデート 3 2022/07/09 22:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# コマンドプロンプト画面で表...
-
コマンドプロンプトが使えない
-
ShellExecuteの使い方について
-
32bitアプリから64bitアプリの...
-
VBプログラムから「管理者とし...
-
ブレークポイントを設置してな...
-
SYSTEM関数等を用いて複数のコ...
-
MacOS:ターミナルではNPMのコ...
-
ShellExecuteでDOSコマンド実行...
-
JAVA バッチファイルの作成・...
-
batよりjava起動
-
Eclipseで、プロジェクト名のと...
-
正しいURL指定しているにもかか...
-
classファイルについて
-
javaが文字コードの影響でコン...
-
Eclipse(JAVA)のデバッグで他...
-
Eclipse・プロジェクトで、フォ...
-
SVFの設定について:クラスパス...
-
Javascriptの値をJava(JSP)へ渡...
-
html上で、バッチやexeファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MacOS:ターミナルではNPMのコ...
-
VBプログラムから「管理者とし...
-
batよりjava起動
-
ACCESSでタイトルバーを非表示...
-
ShellExecuteの使い方について
-
windowsのタスクスケジューラを...
-
C# コマンドプロンプト画面で表...
-
32bitアプリから64bitアプリの...
-
SYSTEM関数等を用いて複数のコ...
-
jarファイルをバッチで実行させ...
-
コマンドを実行してコマンドラ...
-
バッチファイルの書き方について
-
Java JDK1.3のインストールとpa...
-
CloudSticky.jarが起動しない。
-
Tomcatのメモリー使用量が知りたい
-
EclipseのJAVADOC生成機能について
-
コマンドプロンプトが使えない
-
実行したらがメモ帳出て来てしまう
-
VB6.0 ラベルが文字化け
-
ShellExecuteでDOSコマンド実行...
おすすめ情報