API: Prosessit

Funktioita Windows-prosessien etsimiseen, seurantaan ja hallintaan.

C++-rekisteröinti: regManager(js) ja regProcesses(js).


proc_find

proc_find(name: string) → object

Etsi prosesseja .exe-nimen perusteella (kirjainkoko ei merkitse). Jos useita instansseja on käynnissä — palauttaa kaikki PID:t.

Parametrit:

Parametri Tyyppi Kuvaus
name merkkijono Prosessitiedoston nimi, esim. "notepad.exe"

Tulos:

Kenttä Tyyppi Kuvaus
found totuusarvo true — vähintään yksi instanssi löytyi
pid numero Ensimmäisen löydetyn prosessin PID (0 jos ei löydy)
pids numero[] Taulukko kaikista kyseisen nimisten prosessien PID:istä
error merkkijono Virheilmoitus tai ""

Esimerkki:

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

if (!f.found) {
    console.log("Prosessia ei löytynyt");
} else {
    console.log("Ensimmäinen PID:", f.pid);

    if (f.pids.length > 1) {
        console.log("Useita instansseja:", JSON.stringify(f.pids));
    }
}

proc_cpu

proc_cpu(pid: number) → object

Prosessin prosessorin käyttöaste prosentteina.

Huomio: Funktio tekee kaksi mittauskertaa 200 ms tauolla — suoritus pysähtyy tänä aikana.

Parametrit:

Parametri Tyyppi Kuvaus
pid numero Prosessin PID

Tulos:

Kenttä Tyyppi Kuvaus
cpu numero Prosessorin käyttöaste prosentteina (−1 virhetilanteessa)
error merkkijono Virheilmoitus tai ""

Esimerkki:

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

proc_ram

proc_ram(pid: number) → object

Muistinkulutus (Working Set).

Parametrit:

Parametri Tyyppi Kuvaus
pid numero Prosessin PID

Tulos:

Kenttä Tyyppi Kuvaus
ram_mb numero Megatavua (−1 virhetilanteessa)
ram_bytes numero Tavua
error merkkijono Virheilmoitus tai ""

Esimerkki:

let r = proc_ram(1234);
console.log("RAM:", r.ram_mb.toFixed(1), "Mt");
console.log("RAM (tavua):", r.ram_bytes);

proc_alive

proc_alive(pid: number) → object

Onko prosessi elossa ja vastaa viesteihin.

Toiminta:

  • GUI-prosessi (näkyvä ikkuna): tarkistetaan SendMessageTimeout-funktiolla 1 sekunnin aikakatkaisulla.
  • Taustaprosessi (ei ikkunaa): responding = alive.

Parametrit:

Parametri Tyyppi Kuvaus
pid numero Prosessin PID

Tulos:

Kenttä Tyyppi Kuvaus
alive totuusarvo true — prosessi on olemassa eikä ole päättynyt
responding totuusarvo true — prosessi vastaa viesteihin
error merkkijono Virheilmoitus tai ""

Esimerkki:

let r = proc_alive(1234);
console.log("Elossa:", r.alive);
console.log("Vastaava:", r.responding);

if (r.alive && !r.responding) {
    console.log("Prosessi on jumissa!");
}

proc_service

proc_service(pid: number) → object

Kuuluuko prosessi Windows-palveluun.

Parametrit:

Parametri Tyyppi Kuvaus
pid numero Prosessin PID

Tulos:

Kenttä Tyyppi Kuvaus
is_service totuusarvo true — prosessi on Windows-palvelu
service_name merkkijono Palvelun nimi tai ""
error merkkijono Virheilmoitus tai ""

Esimerkki:

let r = proc_service(1234);
if (r.is_service) {
    console.log("Palvelu:", r.service_name);
}

proc_kill

proc_kill(pid: number) → object

Pakota prosessin lopettaminen (TerminateProcess).

Parametrit:

Parametri Tyyppi Kuvaus
pid numero Prosessin PID

Tulos:

Kenttä Tyyppi Kuvaus
ok totuusarvo true — prosessi lopetettiin
error merkkijono Virheilmoitus tai ""

Esimerkki:

let r = proc_kill(1234);
if (r.ok) {
    console.log("Prosessi lopetettu");
} else {
    console.log("Virhe:", r.error);
}

proc_run

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

Käynnistä uusi prosessi (CreateProcess).

Parametrit:

Parametri Tyyppi Kuvaus
path merkkijono Täysi polku .exe-tiedostoon
args merkkijono (valinnainen) Komentoriviparametrit

Tulos:

Kenttä Tyyppi Kuvaus
ok totuusarvo true — prosessi käynnistettiin
pid numero Uuden prosessin PID (0 virhetilanteessa)
error merkkijono Virheilmoitus tai ""

Esimerkkejä:

// Ilman argumentteja
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);

// Argumenteilla
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
    console.log("Käynnistetty, PID:", r2.pid);
} else {
    console.log("Virhe:", r2.error);
}

Täydellinen esimerkki: yksittäisen prosessin seuranta

let name = "myapp.exe";

// 1. Etsi prosessi
let f = proc_find(name);
if (!f.found) {
    console.log("[VAROITUS] Prosessia ei löytynyt:", name);
} else {
    let pid = f.pid;

    // 2. Kerää mittatietoja
    let cpu  = proc_cpu(pid);      // pysähtyy 200 ms:ksi
    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) + " Mt");
    console.log("Elossa:", live.alive, "| Vastaava:", live.responding);

    if (svc.is_service) {
        console.log("Palvelu:", svc.service_name);
    }
}