繁体   English   中英

使用python在Windows 10中模拟ctrl + c事件

simulate ctrl+c event in windows 10 using python

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用库pyautogui在python3中模拟ctrl + c键盘事件。 不幸的是,该库不会生成此事件。 还有其他方法可以生成此吗?

以下代码不起作用,

from pyautogui import hotkey

hotkey('ctrl', 'c')

我要针对以下代码执行此任务。 该代码可以在任意持续时间内录制现场音频,并且可以通过按“ Ctrl + c”在任何时间停止录制。 我想生成此事件,以便可以添加一些其他功能。

import os
import sys
import time
import queue
import soundfile as f
import sounddevice as sd

def callback(indata, frames, time, status):
            """
    This function is called for each audio block from the record function.
    """

    if status:
        print(status, file=sys.stderr)
    q.put(indata.copy())

def record(filename):

    try:
        # Make sure the file is open before recording begins
        with sf.SoundFile(filename, mode='x', samplerate=48000, channels=2, subtype="PCM_16") as file:
            with sd.InputStream(samplerate=48000, channels=2, callback=callback):
                print('START')
                print('#' * 80)
                """ 
                Here is the place I want to generate the event (Ctrl+c) 
                after n minutes
                """
                print('press Ctrl+c to stop the recording')
                while True:
                    file.write(q.get())
    except KeyboardInterrupt:
        print('The recording is over.')

if __name__ == "__main__":
    q = queue.Queue()
    record('filename.wav')
1 个回复

这只是一个建议,可能并不好,因为我是python的初学者。

使用PyWin32调用Windows API GenerateConsoleCtrlEvent() 您可以使用此API生成CTRL + C,因此如果您使用PyWin32调用它可以解决您的问题。

更新:

这是我的第一个python代码。 您可以使用send_ctrl_c函数将CTRL-C发送到另一个进程。 我检查了它,它可以工作。

import win32api as api
import win32console as con

# takes another process id as argument. method sleeps for 2 seconds 
def send_ctrl_c(pid) :
 con.FreeConsole()
 if con.AttachConsole(int(pid)) == None : 
  api.SetConsoleCtrlHandler(None, 1)
  api.GenerateConsoleCtrlEvent(con.CTRL_C_EVENT, 0)
  api.Sleep(2000)
  con.FreeConsole()
  api.SetConsoleCtrlHandler(None, 0)

此代码是根据此处此处编写的。

3 在Windows上处理Node.js中的CTRL + C事件

我正在进行一个节点项目,我想在退出时写一些内存到文件。 我认为这很简单: 但是,当收到CTRL + C时,此代码不会执行(在Windows上)。 鉴于这是退出Node的实际方法,这似乎有点问题。 此时我尝试处理信号(on。('SIGINT',...)),这导致错误: ...

4 使用 Python 在 Windows 8 中模拟触摸事件

我正在尝试使用 python 为 windows 8 编写一种驱动程序。我将通过串行接收触摸坐标,然后我想用它来使它看起来好像有人触摸了屏幕上的这些坐标(模拟触摸)。 我的第一个问题是: Windows 8 中的触摸事件与仅在该区域单击鼠标不同吗? (我知道他们改进了触摸事件的所有内容,但不 ...

5 python程序挂起,无法在Windows上使用ctrl + c退出

我这个问题困扰了一年多。 我有大约200个实例在4-5台不同的服务器/个人PC上运行没有问题,但每周(总共有1-5次)它们卡在了无法预测的位置,甚至ctrl + c也不会退出Windows控制台。 几乎可以确定它与Internet连接丢失有关,即使我的请求调用设置了超时,因为我确实在 ...

7 在 Windows 中从 C++ 模拟鼠标事件

我有一个在触摸屏上运行的程序,但是由于鼠标指针在触摸屏上“打开”会带来问题,触摸屏的 Windows 鼠标行为已被禁用,并且正在使用一个自制程序来监视触摸屏幕并将消息发送到屏幕被触摸或未触摸的位置的窗口(即WM_LBUTTONDOWN 、 WM_LBUTTONUP )。 相关代码如下所示: 这 ...

9 将Ctrl-C模拟为python脚本

我有一个python脚本,它等待一些作业并在线程中执行它们(使用subprocess.Popen和shell=True )。 当我在外壳中运行脚本并尝试使用Ctrl-C终止该脚本时,它将正常正常关闭。 问题是我想将此脚本作为守护程序运行,然后使用某种unix信号终止它。 INT信号应与 ...

10 使用 Jest 模拟 CTRL + V 事件

我正在构建一个从剪贴板读取 CSV 并将其转换为 HTML 表格的应用程序。 这是测试: import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import App from './App'; t ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM