use windows::Win32::Foundation::{CloseHandle, HANDLE, HWND};
use windows::Win32::Graphics::Gdi::HDC;
#[derive(Debug)]
pub struct ProcessState {
pub pid: u32,
pub hwnd: HWND,
pub handle: HANDLE,
pub hdc: HDC,
}
impl ProcessState {
pub fn is_valid(&self) -> bool {
!self.handle.is_invalid() && !self.hwnd.is_invalid()
}
}
impl Drop for ProcessState {
fn drop(&mut self) {
if !self.hdc.is_invalid() {
unsafe {
let _ = windows::Win32::Graphics::Gdi::DeleteDC(self.hdc);
}
}
if !self.handle.is_invalid() {
unsafe {
let _ = CloseHandle(self.handle);
}
}
}
}