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);
}
}