UNPKG

@getexcited/chompers

Version:

High-performance native Node.js addon for Windows screen recording and window enumeration

136 lines (117 loc) 4.46 kB
import { getAllWindows, WindowInfo } from "../index"; async function main(): Promise<void> { console.log("=== Get All Windows Example ==="); console.log("This example demonstrates window enumeration functionality."); console.log(); try { // Get all windows with detailed information const windows: WindowInfo[] = getAllWindows(); console.log(`Found ${windows.length} windows:`); console.log("=".repeat(80)); // Display all windows with their information windows.forEach((window, index) => { console.log(`${index + 1}. ${window.title || "(No Title)"}`); console.log(` Class Name: ${window.className}`); console.log(` Executable: ${window.executable}`); console.log(` Full Path: ${window.fullExe}`); console.log(` Process ID: ${window.pid}`); console.log(` Window Handle: ${window.hwnd}`); console.log(` Product Name: ${window.productName || "N/A"}`); console.log(` Focused: ${window.focused ? "Yes" : "No"}`); console.log( ` Monitor: ${window.monitorDimensions.width}x${window.monitorDimensions.height}` ); console.log( ` Spans Multiple Monitors: ${ window.intersectsMultiple ? "Yes" : "No" }` ); if (window.arguments && window.arguments.length > 0) { console.log(` Arguments: ${window.arguments.join(" ")}`); } else { console.log(` Arguments: None`); } console.log("-".repeat(80)); }); // Filter and display focused windows const focusedWindows = windows.filter((w) => w.focused); console.log(`\nFocused Windows (${focusedWindows.length}):`); focusedWindows.forEach((window) => { console.log(` • ${window.title} (${window.executable})`); }); // Filter and display windows by common applications const commonApps = [ "chrome", "firefox", "notepad", "code", "discord", "steam", ]; console.log("\nCommon Applications Found:"); commonApps.forEach((appName) => { const appWindows = windows.filter( (w) => w.executable.toLowerCase().includes(appName.toLowerCase()) || w.title.toLowerCase().includes(appName.toLowerCase()) ); if (appWindows.length > 0) { console.log(` ${appName.toUpperCase()}:`); appWindows.forEach((window) => { console.log(` - ${window.title} (PID: ${window.pid})`); }); } }); // Display monitor information const uniqueMonitors = new Map<string, any>(); windows.forEach((window) => { const monitorKey = `${window.monitorDimensions.width}x${window.monitorDimensions.height}`; if (!uniqueMonitors.has(monitorKey)) { uniqueMonitors.set(monitorKey, window.monitorDimensions); } }); console.log(`\nDetected Monitors (${uniqueMonitors.size}):`); uniqueMonitors.forEach((monitor, resolution) => { console.log( ` • ${resolution} - Primary: ${monitor.isPrimary ? "Yes" : "No"}` ); }); // Display windows that span multiple monitors const multiMonitorWindows = windows.filter((w) => w.intersectsMultiple); if (multiMonitorWindows.length > 0) { console.log( `\nWindows Spanning Multiple Monitors (${multiMonitorWindows.length}):` ); multiMonitorWindows.forEach((window) => { console.log(` • ${window.title} (${window.executable})`); }); } // Display statistics console.log("\n" + "=".repeat(80)); console.log("STATISTICS:"); console.log(`Total Windows: ${windows.length}`); console.log(`Focused Windows: ${focusedWindows.length}`); console.log(`Multi-Monitor Windows: ${multiMonitorWindows.length}`); console.log(`Unique Monitors: ${uniqueMonitors.size}`); const uniqueProcesses = new Set(windows.map((w) => w.executable)).size; console.log(`Unique Processes: ${uniqueProcesses}`); const windowsWithTitles = windows.filter( (w) => w.title && w.title.trim().length > 0 ).length; console.log(`Windows with Titles: ${windowsWithTitles}`); } catch (error) { console.error("Error enumerating windows:", error); if (typeof process !== "undefined") { process.exit(1); } } } // Run the example if ( typeof require !== "undefined" && typeof module !== "undefined" && require.main === module ) { main().catch(console.error); } export { main };