API: プロセス

Windowsプロセスの検索、監視、管理のための関数。

C++登録: regManager(js) および regProcesses(js)


proc_find

proc_find(name: string) → object

.exe名(大文字小文字を区別しない)でプロセスを検索します。 複数のインスタンスが実行されている場合は、すべてのPIDを返します。

パラメータ:

パラメータ 説明
name string プロセスファイル名(例: "notepad.exe"

結果:

フィールド 説明
found bool true — 少なくとも1つのインスタンスが見つかった
pid number 最初に見つかったプロセスのPID(見つからない場合は0)
pids number[] その名前を持つすべてのPIDの配列
error string エラーメッセージまたは ""

例:

let f = proc_find("notepad.exe");

if (!f.found) {
    console.log("プロセスが見つかりません");
} else {
    console.log("最初のPID:", f.pid);

    if (f.pids.length > 1) {
        console.log("複数のインスタンス:", JSON.stringify(f.pids));
    }
}

proc_cpu

proc_cpu(pid: number) → object

プロセスのCPU使用率(パーセント)。

注意: この関数は200ミリ秒の間隔を置いて2回測定を行います — この間、実行はブロックされます。

パラメータ:

パラメータ 説明
pid number プロセスPID

結果:

フィールド 説明
cpu number CPU使用率(パーセント)(エラー時は−1
error string エラーメッセージまたは ""

例:

let r = proc_cpu(1234);
if (r.error) {
    console.log("エラー:", r.error);
} else {
    console.log("CPU:", r.cpu.toFixed(1) + "%");
}

proc_ram

proc_ram(pid: number) → object

メモリ消費量(ワーキングセット)。

パラメータ:

パラメータ 説明
pid number プロセスPID

結果:

フィールド 説明
ram_mb number MB(エラー時は−1
ram_bytes number バイト
error string エラーメッセージまたは ""

例:

let r = proc_ram(1234);
console.log("RAM:", r.ram_mb.toFixed(1), "MB");
console.log("RAM (バイト):", r.ram_bytes);

proc_alive

proc_alive(pid: number) → object

プロセスが生存しており、メッセージに応答するかどうかを確認します。

動作:

  • GUIプロセス(可視ウィンドウを持つ): 1秒のタイムアウトでSendMessageTimeoutを使用して確認します。
  • バックグラウンドプロセス(ウィンドウなし): responding = alive

パラメータ:

パラメータ 説明
pid number プロセスPID

結果:

フィールド 説明
alive bool true — プロセスが存在し、終了していない
responding bool true — プロセスがメッセージに応答する
error string エラーメッセージまたは ""

例:

let r = proc_alive(1234);
console.log("生存:", r.alive);
console.log("応答:", r.responding);

if (r.alive && !r.responding) {
    console.log("プロセスがハングしています!");
}

proc_service

proc_service(pid: number) → object

プロセスがWindowsサービスに属しているかどうかを確認します。

パラメータ:

パラメータ 説明
pid number プロセスPID

結果:

フィールド 説明
is_service bool true — プロセスはWindowsサービスです
service_name string サービス名または ""
error string エラーメッセージまたは ""

例:

let r = proc_service(1234);
if (r.is_service) {
    console.log("サービス:", r.service_name);
}

proc_kill

proc_kill(pid: number) → object

プロセスを強制終了します(TerminateProcess)。

パラメータ:

パラメータ 説明
pid number プロセスPID

結果:

フィールド 説明
ok bool true — プロセスが終了した
error string エラーメッセージまたは ""

例:

let r = proc_kill(1234);
if (r.ok) {
    console.log("プロセスを終了しました");
} else {
    console.log("エラー:", r.error);
}

proc_run

proc_run(path: string, args?: string) → object

新しいプロセスを開始します(CreateProcess)。

パラメータ:

パラメータ 説明
path string .exeへのフルパス
args string (オプション) コマンドライン引数

結果:

フィールド 説明
ok bool true — プロセスが開始された
pid number 新しいプロセスのPID(エラー時は0)
error string エラーメッセージまたは ""

例:

// 引数なし
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);

// 引数あり
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
    console.log("開始しました、PID:", r2.pid);
} else {
    console.log("エラー:", r2.error);
}

完全な例: 単一プロセスの監視

let name = "myapp.exe";

// 1. プロセスを検索
let f = proc_find(name);
if (!f.found) {
    console.log("[警告] プロセスが見つかりません:", name);
} else {
    let pid = f.pid;

    // 2. メトリクスを収集
    let cpu  = proc_cpu(pid);      // 200ミリ秒ブロックされます
    let ram  = proc_ram(pid);
    let live = proc_alive(pid);
    let svc  = proc_service(pid);

    console.log("PID:", pid);
    console.log("CPU:", cpu.cpu.toFixed(1) + "%");
    console.log("RAM:", ram.ram_mb.toFixed(1) + " MB");
    console.log("生存:", live.alive, "| 応答:", live.responding);

    if (svc.is_service) {
        console.log("サービス:", svc.service_name);
    }
}