首页 > 编程语言 >Python中的NirCmd入门

Python中的NirCmd入门

时间:2023-10-17 17:03:13浏览次数:39  
标签:调用 入门 Python 截屏 subprocess NirCmd 使用

Python中的NirCmd入门

简介

NirCmd是一个强大的命令行实用工具,可在Windows系统上执行各种系统操作和任务。它可以用于执行诸如调整音量、打开网站、控制窗口、发送键盘鼠标输入等常见任务。虽然NirCmd是一个独立的可执行文件,但我们可以使用Python来调用它并将其集成到我们的脚本中。 本文将介绍如何在Python中使用NirCmd。首先,我们需要下载并安装NirCmd,并确保它已添加到系统路径中。然后,我们将使用subprocess模块调用NirCmd命令并处理其输出。

安装

首先,我们需要下载并安装NirCmd。您可以从NirSoft的官方网站(https://www.nirsoft.net/utils/nircmd.html)上下载最新版本的NirCmd。下载完成后,将NirCmd.exe文件放在一个方便的位置,并将其添加到系统路径中。这样,我们就可以在任何位置调用NirCmd命令。

使用示例

接下来,我们将介绍几个常见的使用示例。

调整音量

要在Python中使用NirCmd调整音量,我们可以使用以下代码:

pythonCopy codeimport subprocess
# 调用NirCmd的音量命令
subprocess.call(['nircmd.exe', 'changesysvolume', '5000'])

此代码将使用NirCmd将系统音量调整为50%。您可以将'5000'替换为您期望的音量百分比(1-65535之间的一个整数)。

打开网站

要在默认浏览器中打开一个网站,我们可以使用以下代码:

pythonCopy codeimport subprocess
# 调用NirCmd的打开网站命令
subprocess.call(['nircmd.exe', 'exec', 'open', 'https://www.example.com'])

此代码将使用NirCmd在默认浏览器中打开"https://www.example.com"网站。您可以将URL替换为您希望打开的任何网站。

控制窗口

要最小化窗口或将其置于前台,我们可以使用以下代码:

pythonCopy codeimport subprocess
# 调用NirCmd的窗口操作命令
subprocess.call(['nircmd.exe', 'win', 'min', 'title', '窗口标题'])

这将使用NirCmd将标题为"窗口标题"的窗口最小化。您可以替换"窗口标题"为目标窗口的实际标题。

发送键盘鼠标输入

要发送键盘或鼠标输入,我们可以使用以下代码:

pythonCopy codeimport subprocess
# 调用NirCmd的发送键盘输入命令
subprocess.call(['nircmd.exe', 'sendkey', 'keydown', 'ctrl', 'keydown', 'shift', 'keypress', 'a', 'keyup', 'ctrl', 'keyup', 'shift'])

此代码将使用NirCmd发送Ctrl + Shift + A的键盘输入。您可以替换这些参数以发送您希望的键盘输入。

结论

NirCmd是一个非常有用的工具,可以帮助我们在Windows系统上执行各种任务。通过将NirCmd与Python集成,我们可以利用Python的灵活性和强大的库来实现自动化任务和系统操作。在本文中,我们介绍了如何在Python中使用NirCmd,并展示了一些常见的使用示例。希望这篇文章能帮助您了解如何在Python中使用NirCmd,并为您的工作或项目带来便利。

案例:自动截屏并保存

假设我们需要编写一个Python脚本,每隔一段时间自动截取屏幕上的内容,并将截图保存到指定的文件夹中。我们可以使用NirCmd来实现这个任务。 首先,我们需要在系统中安装NirCmd,并将其添加到系统路径中。然后,我们可以使用以下示例代码来实现自动截屏并保存:

pythonCopy codeimport subprocess
import time
# 截屏并保存函数
def screenshot_and_save(file_path):
    # 调用NirCmd的截屏命令
    subprocess.call(['nircmd.exe', 'savescreenshot', file_path])
# 自动循环截屏函数
def auto_screenshot(file_folder, interval):
    while True:
        # 按照当前时间生成文件名
        current_time = time.strftime('%Y%m%d%H%M%S', time.localtime())
        file_name = current_time + '.png'
        file_path = file_folder + '\\' + file_name
        # 调用截屏函数
        screenshot_and_save(file_path)
        # 等待指定时间间隔
        time.sleep(interval)
# 调用自动截屏函数,截屏间隔为5秒,保存到当前文件夹
auto_screenshot('.', 5)

在这个示例中,我们定义了一个screenshot_and_save函数,用于调用NirCmd的截屏命令,并将截图保存到指定的文件路径中。然后,我们定义了一个auto_screenshot函数,用于循环调用screenshot_and_save函数,实现自动截屏的功能。函数接受两个参数,分别是保存截图的文件夹路径和截屏的时间间隔。 最后,我们调用auto_screenshot函数,将截图保存到当前文件夹中,每隔5秒截取一次屏幕。 通过使用NirCmd和Python的结合,我们可以轻松实现各种自动化任务和系统操作。以上示例仅为演示之用,您可以根据您的实际需求进行修改和扩展。

NirCmd是一个功能强大的命令行工具,可以执行各种系统操作和任务。然而,它也有一些缺点,包括以下几点:

  1. 平台限制:NirCmd只能在Windows操作系统上使用,无法在其他操作系统上运行。这意味着如果你的应用程序需要在其他平台上运行,你就不能使用NirCmd。
  2. 命令行接口:NirCmd的交互方式主要是通过命令行输入和输出,对于非技术人员来说,这可能不够友好和直观。使用NirCmd需要熟悉命令行语法和参数,对于不熟悉命令行的人来说可能会有一定的学习和使用难度。
  3. 安全性:NirCmd的功能非常强大,可以执行一些系统操作,如修改注册表、窗口操作等。这也意味着如果被恶意使用,可能会对系统的安全性造成潜在风险。因此,在使用NirCmd时需要谨慎,并且只在可信的环境中使用。 除了NirCmd之外,还有一些类似的工具可以执行类似的任务,例如:
  4. AutoHotKey:AutoHotKey是一个用于自动化任务和脚本编写的开源脚本语言和自定义工具。它可以模拟键盘和鼠标操作,执行窗口操作,处理文本等。与NirCmd相比,AutoHotKey可以更灵活地处理和控制系统操作,同时具有更多的扩展功能和更友好的编程接口。
  5. SikuliX:SikuliX 是一个基于图像识别的自动化工具,它可以通过图像匹配来控制鼠标和键盘,模拟用户操作。SikuliX 具有Python编程接口,可在多个平台上运行,支持跨平台自动化。与NirCmd相比,SikuliX更适合进行基于图像的自动化任务,如自动化测试、图像识别等。
  6. PowerShell:PowerShell是Windows操作系统的脚本编程语言和任务自动化框架。它提供了大量的命令和API,可以执行各种系统操作和管理任务。PowerShell比NirCmd更强大和灵活,具有更丰富的功能和更广泛的应用领域,但对于非技术人员来说也可能有一定的学习和使用难度。 综上所述,NirCmd虽然在执行系统操作和任务方面非常便利,但也有一些局限性。在选择合适的工具时,需要根据具体任务需求、平台兼容性和安全性等因素进行评估和选择。

标签:调用,入门,Python,截屏,subprocess,NirCmd,使用
From: https://blog.51cto.com/u_15702012/7907770

相关文章

  • python练习.5
    问:计算并输出100-200不能被三整除的整数的和voidtest1(){ intarr[10]={2,3,1,4,5,7,6,8,9,10}; intsi=sizeof(arr)/sizeof(arr[0]); qsort(arr,si,sizeof(arr[0]),ayue2); qsort(arr,si,sizeof(arr[0]),ayue3); inti=0; for(i=0;i<si;i++)......
  • Intel发布入门级至强E-2400:13代酷睿师弟、砍掉小核
    Intel刚刚推出了首批14代酷睿处理器,但是13代又有了新的衍生版,面向入门级服务器和工作站的至强E-2400系列。至强E系列的节奏一直很慢,基本两年一代:2019年的E-2200系列源自8/9代酷睿,2021年的E-2300系列来自11代酷睿。最新的至强E-2400系列还没有正式发布,官方产品库里也找不到,但是......
  • 【Python&语义分割】Segment Anything(SAM)模型交互式分割+掩膜保存(三)
    ​我之前分享了SegmentAnything(SAM)模型的基本操作,这篇给大家分享下交互式语义分割代码,可以通过鼠标点击目标物生成对应的掩膜,同时我还加入了掩膜保存的代码。1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能......
  • 【Python微信机器人】第一篇:在windows11上编译python
    前言我打算写一个系列,内容是将python注入到其他进程实现inlinehook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜PC微信逆向。我......
  • Spark入门运行wordcount
    在spark集群上跑一个程序首先保证下面进程开启zookeeperhdfsspark首先是父类的依赖<properties><scala.version>2.11.8</scala.version><spark.version>2.2.2</spark.version><hadoop.version>2.7.6</hadoop.version></pro......
  • python连接数据库
    importpymysqlfrompymysql.constantsimportCLIENT'''pymysql执行多条SQL语句8.0版本之后需要在建立连接的时候添加参数client_flag=CLIENT.MULTI_STATEMENTS'''#打开数据库连接db=pymysql.connect(host='localhost',user='root',......
  • 【原型链污染】Python与Js
    【原型链污染】Python与Js一、背景最近在TSCTF的比赛题中遇到了Python的原型链污染题目,所以借此机会学习一下。说到原型链,最多的还是在Js中,所以就一并学习一下。(因为是菜鸡所以文章可能的存在一些错误,欢迎批评指正)。二、JS原型链简介原型是Js代码中对象的继承方式。其实和别的......
  • python链接mongodb的问题
    python链接mongodb需要指定数据库importpymongomonclient=pymongo.MongoClient("mongodb://用户名:密码@192.168.10.200:27017/数据库名")mondb=monclient["数据库名"]moncol=mondb["表名"]网上很多资料都没有指定数据库名,导致后续操作提示没有权限......
  • python 封装日志logging
    #!/usr/bin/python#-*-coding:utf-8-*-importloggingimporttimeimportosclassLog(object):'''封装后的logging'''def__init__(self,logger=None,log_cate='search'):'''......
  • EPLAN 电气设计入门学习笔记
     1.EPLAN中的结构描述符号功能面结构=功能面结构符号“=”,译为高层代号,表示系统根据功能被分为若干组成项目。产品面结构-符号“-”,表示根据产品分类,例如“-Q”表示空气开关。位置面结构+符号“+”,描述部件在系统中的位置,译为“位置代号”。器件引脚标识:例如“-H1:......