首页 > 系统相关 >Electron 项目中获取 Windows 进程列表的深入剖析

Electron 项目中获取 Windows 进程列表的深入剖析

时间:2024-11-08 10:51:08浏览次数:7  
标签:tasklist const Windows 列表 剖析 Electron tasklistCommand error 进程

Electron 项目中获取 Windows 进程列表的深入剖析

一、引言

在 Windows 系统下的 Electron 项目开发中,获取进程列表信息是一项十分关键的任务。这对于进程管理、资源监控、应用程序交互等多种功能的实现都有着重要意义。我们将围绕给出的代码片段,深入探讨如何完善代码以准确、高效地获取进程列表,包括进程 ID 等关键信息。

二、Windows 下获取进程列表的基础知识

(一)tasklist 命令概述

在 Windows 操作系统中,tasklist是一个强大的命令行工具。它可以列出当前系统中正在运行的进程的详细信息。通过不同的参数组合,可以实现对进程的筛选和查询。例如,/fi参数用于指定筛选条件。

(二)现有代码分析

我们有两个代码片段:const tasklistCommand = tasklist /fi “imagename eq ${processname}”;const tasklistCommand = tasklist /fi “windowtitle eq ${processWindowTitle}”;。这里分别是通过进程的图像名称(imagename)和窗口标题(windowtitle)来筛选进程。然而,这只是获取进程列表的起点,还有很多工作要做。

三、完善代码以获取进程列表

(一)执行命令获取原始输出

首先,我们需要在 Electron 项目中执行这些tasklist命令。在 Node.js(Electron 基于 Node.js)环境中,可以使用child_process模块来实现。以下是一个基本的示例代码:

const { exec } = require('child_process');

function getProcessListByImageName(processname) {
  const tasklistCommand = `tasklist /fi "imagename eq ${processname}"`;
  return new Promise((resolve, reject) => {
    exec(tasklistCommand, (error, stdout, stderr) => {
      if (error) {
        reject(error);
      } else {
        resolve(stdout);
      }
    });
  });
}

function getProcessListByWindowTitle(processWindowTitle) {
  const tasklistCommand = `tasklist /fi "windowtitle eq ${processWindowTitle}"`;
  return new Promise((resolve, reject) => {
    exec(tasklistCommand, (error, stdout, stderr) => {
      if (error) {
        reject(error);
      } else {
        resolve(stdout);
      }
    });
  });
}

在上述代码中,我们创建了两个函数getProcessListByImageNamegetProcessListByWindowTitle,它们分别根据进程图像名称和窗口标题获取进程列表信息。通过exec函数执行tasklist命令,并将结果以 Promise 的形式返回。

(二)解析原始输出

tasklist命令的输出是一个文本格式,我们需要解析它来提取有用的信息,如进程 ID、内存使用等。以下是一个简单的解析函数示例:

function parseProcessList(output) {
  const lines = output.split('\n');
  const processList = [];
  for (let i = 3; i < lines.length - 1; i++) { // 跳过标题行和空行
    const parts = lines[i].trim().split(/\s+/);
    const processInfo = {
      pid: parseInt(parts[1]),
      imageName: parts[0],
      sessionName: parts[2],
      sessionNumber: parseInt(parts[3]),
      memoryUsage: parts[4],
      status: parts[5]
    };
    processList.push(processInfo);
  }
  return processList;
}

这个函数接受tasklist命令的输出文本,将其按行分割,然后提取每一行中的关键信息,构建一个包含进程详细信息的对象数组。

(三)完整的获取和解析进程列表函数

结合前面的代码,我们可以创建更完整的函数:

const { exec } = require('child_process');

function getAndParseProcessListByImageName(processname) {
  const tasklistCommand = `tasklist /fi "imagename eq ${processname}"`;
  return new Promise((resolve, reject) => {
    exec(tasklistCommand, (error, stdout, stderr) => {
      if (error) {
        reject(error);
      } else {
        const parsedList = parseProcessList(stdout);
        resolve(parsedList);
      }
    });
  });
}

function getAndParseProcessListByWindowTitle(processWindowTitle) {
  const tasklistCommand = `tasklist /fi "windowtitle eq ${processWindowTitle}"`;
  return new Promise((resolve, reject) => {
    exec(tasklistCommand, (error, stdout, stderr) => {
      if (error) {
        reject(error);
      } else {
        const parsedList = parseProcessList(stdout);
        resolve(parsedList);
      }
    });
  });
}

四、案例代码展示与应用场景

(一)查找特定应用程序的进程

假设我们要查找所有正在运行的notepad.exe进程。可以使用以下代码:

getAndParseProcessListByImageName('notepad.exe').then((processList) => {
  console.log('找到的 notepad.exe 进程列表:', processList);
}).catch((error) => {
  console.error('获取进程列表出错:', error);
});

(二)根据窗口标题查找进程

如果我们知道某个窗口的标题,比如一个自定义应用程序的特定窗口标题为“我的重要窗口”,可以这样查找相关进程:

getAndParseProcessListByWindowTitle('我的重要窗口').then((processList) => {
  console.log('根据窗口标题找到的进程列表:', processList);
}).catch((error) => {
  console.error('获取进程列表出错:', error);
});

这些案例展示了如何在 Electron 项目中利用完善后的代码来获取和解析进程列表信息,可用于诸如进程监控、自动化操作等多种应用场景。

五、总结

在本文中,我们从最初的简单tasklist命令代码片段出发,逐步完善了在 Electron 项目中获取和解析 Windows 进程列表信息的代码。通过理解tasklist命令的原理、执行命令获取输出、解析输出内容,我们实现了功能强大的进程列表获取函数,并通过案例展示了其在实际开发中的应用。这为 Electron 开发者在进程管理相关功能的实现上提供了有力的支持,有助于开发出更稳定、高效的桌面应用程序。

标签:tasklist,const,Windows,列表,剖析,Electron,tasklistCommand,error,进程
From: https://blog.csdn.net/ashyyyy/article/details/143617207

相关文章

  • 鸿蒙 Next 安全机制之密码管理:深度剖析与最佳实践
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在开发多语言电商平台方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在数字化时代......
  • 在 Windows Server 系统中,更改更新服务器地址(即更改 Windows 更新源)通常需要调整组策
    在WindowsServer系统中,更改更新服务器地址(即更改Windows更新源)通常需要调整组策略或注册表设置。以下是两种常见的方法来更改Windows更新服务器地址:方法一:通过组策略设置更新服务器地址打开组策略编辑器按下Win+R打开“运行”窗口,输入gpedit.msc并按回车,打开本地......
  • Microsoft Office 2019 (office全家桶)for Mac/Windows电脑安装包
    MicrosoftOffice2019forMac(Office全家桶)是一款功能全面且强大的办公软件套件,专为Mac用户设计。Mac苹果电脑下载:Office2019(含激活秘钥)Windows电脑下载:Office2019(含批量许可)    以下是其主要特点和优势:一、界面设计采用了Mac系统的设......
  • Windows基础 -- 常用cmd命令
    声明:本文的学习内容来源于B站up主“泷羽sec”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文......
  • Windows下Cassandra数据库安装及编程访问
    前提紧要:由于我的Java版本是Java8所以为了兼容,我选择了apache-cassandra-3.11.11官网下载链接:https://www.apache.org/dyn/closer.lua/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz通常推荐使用Java8来运行Cassandra3.x版本,因为它的性能和稳定性在这一组合下得......
  • windows & MacBook 下载视频网站视频
    下载yt-dlpgithub地址:https://github.com/yt-dlp/yt-dlp下载:https://github.com/yt-dlp/yt-dlp/releases下载ffmpeg官网:https://ffmpeg.org/解压后,只有bin下的这2个文件放C盘目录下将下面这3个程序,挪到:C:\Windows\System32下载视频在任意路径:cmd命令:yt-dlp{视频......
  • PowerShell DSC(Desired State Configuration)是一种配置管理框架,旨在通过声明性的方式
    PowerShellDSC(DesiredStateConfiguration)是一种配置管理框架,旨在通过声明性的方式自动化和管理计算机的配置。它是WindowsPowerShell的一部分,允许管理员定义和维护计算机系统的目标配置状态,而不是手动进行逐个更改。1. 什么是PowerShellDSC?PowerShellDSC是一种基于声......
  • PowerShell 脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs) 和 旧版 JavaScript(.js) 都可以在
    PowerShell脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs)和旧版JavaScript(.js)都可以在Windows系统中运行,但它们的兼容性和支持范围有一定的差异,尤其是在不同的Windows版本上。下面是它们在Windows系统中支持的情况:1. PowerShell脚本(.ps1)兼容性: PowerShell是自Window......
  • Nexpose 6.6.277 for Linux & Windows - 漏洞扫描
    Nexpose6.6.277forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,releasedNov06,2024请访问原文链接:https://sysin.org/blog/nexpose-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序新增功能2024年11月......
  • HCL AppScan Standard 10.7.0 (Windows) - Web 应用程序安全测试
    HCLAppScanStandard10.7.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:https://sysin.org/blog/appscan-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程序安全解决方案(SAST、D......