/
pasko_evg
/
proxifier
Обзор
Документация
Войти
/
pasko_evg
/
proxifier
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/process.rs
36 строк
1 KB
Евгений Пасько
Initial Commit
02 июн 2025, 20:03
02 июн 2025, 20:03
33b2b77
Код
Авторство
О чём код?
use log::{debug, trace}; use windows::Win32::System::Diagnostics::ToolHelp::{ CreateToolhelp32Snapshot, PROCESSENTRY32, Process32First, Process32Next, TH32CS_SNAPPROCESS, }; use windows::core::PCSTR; pub fn find_process_pid(process_name: &str) -> anyhow::Result<Vec<u32>> { let mut pids = Vec::new(); unsafe { let snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)?; let mut entry: PROCESSENTRY32 = std::mem::zeroed(); entry.dwSize = size_of::<PROCESSENTRY32>() as u32; if Process32First(snapshot, &mut entry).is_ok() { loop { let name = PCSTR(entry.szExeFile.as_ptr() as *const u8).to_string()?; trace!("Process name: {} (PID: {})", name, entry.th32ProcessID); if name.to_lowercase() == process_name.to_lowercase() { debug!("Found process: {} (PID: {})", name, entry.th32ProcessID); pids.push(entry.th32ProcessID); } if Process32Next(snapshot, &mut entry).is_err() { break; } } } } if pids.is_empty() { Err(anyhow::anyhow!("No processes found for {}", process_name)) } else { debug!("Total processes found for {}: {}", process_name, pids.len()); Ok(pids) } }