simulate ctrl+c event in windows 10 using python
I am trying to simulate ctrl+c keyboard event in the python3 using the library pyautogui. Unfortunately, the library doesn't generate this event. Is there any other way to generate this?
The following code is not working,
from pyautogui import hotkey
hotkey('ctrl', 'c')
I want to do this task for the following code. The code can record live audio for the arbitrary duration and the recording can stop anytime by pressing 'Ctrl+c'. I want to generate this event so that I can add some additional features.
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')
python-3.x keyboard-events pyautogui
add a comment |
I am trying to simulate ctrl+c keyboard event in the python3 using the library pyautogui. Unfortunately, the library doesn't generate this event. Is there any other way to generate this?
The following code is not working,
from pyautogui import hotkey
hotkey('ctrl', 'c')
I want to do this task for the following code. The code can record live audio for the arbitrary duration and the recording can stop anytime by pressing 'Ctrl+c'. I want to generate this event so that I can add some additional features.
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')
python-3.x keyboard-events pyautogui
add a comment |
I am trying to simulate ctrl+c keyboard event in the python3 using the library pyautogui. Unfortunately, the library doesn't generate this event. Is there any other way to generate this?
The following code is not working,
from pyautogui import hotkey
hotkey('ctrl', 'c')
I want to do this task for the following code. The code can record live audio for the arbitrary duration and the recording can stop anytime by pressing 'Ctrl+c'. I want to generate this event so that I can add some additional features.
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')
python-3.x keyboard-events pyautogui
I am trying to simulate ctrl+c keyboard event in the python3 using the library pyautogui. Unfortunately, the library doesn't generate this event. Is there any other way to generate this?
The following code is not working,
from pyautogui import hotkey
hotkey('ctrl', 'c')
I want to do this task for the following code. The code can record live audio for the arbitrary duration and the recording can stop anytime by pressing 'Ctrl+c'. I want to generate this event so that I can add some additional features.
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')
python-3.x keyboard-events pyautogui
python-3.x keyboard-events pyautogui
edited Nov 15 '18 at 14:34
M. Denis
asked Nov 14 '18 at 17:25
M. DenisM. Denis
698
698
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
This is just a suggestion and may not be good, because I'm very beginner in python.
Use PyWin32 to call windows API GenerateConsoleCtrlEvent()
. You can generate CTRL+C with this API, so it may solve your problem if you call it with PyWin32
.
Update:
Here is my first ever python code. You can use send_ctrl_c
function to send CTRL-C to another process. I checked it and it works.
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)
This code is written based on here and here.
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305694%2fsimulate-ctrlc-event-in-windows-10-using-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is just a suggestion and may not be good, because I'm very beginner in python.
Use PyWin32 to call windows API GenerateConsoleCtrlEvent()
. You can generate CTRL+C with this API, so it may solve your problem if you call it with PyWin32
.
Update:
Here is my first ever python code. You can use send_ctrl_c
function to send CTRL-C to another process. I checked it and it works.
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)
This code is written based on here and here.
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
add a comment |
This is just a suggestion and may not be good, because I'm very beginner in python.
Use PyWin32 to call windows API GenerateConsoleCtrlEvent()
. You can generate CTRL+C with this API, so it may solve your problem if you call it with PyWin32
.
Update:
Here is my first ever python code. You can use send_ctrl_c
function to send CTRL-C to another process. I checked it and it works.
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)
This code is written based on here and here.
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
add a comment |
This is just a suggestion and may not be good, because I'm very beginner in python.
Use PyWin32 to call windows API GenerateConsoleCtrlEvent()
. You can generate CTRL+C with this API, so it may solve your problem if you call it with PyWin32
.
Update:
Here is my first ever python code. You can use send_ctrl_c
function to send CTRL-C to another process. I checked it and it works.
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)
This code is written based on here and here.
This is just a suggestion and may not be good, because I'm very beginner in python.
Use PyWin32 to call windows API GenerateConsoleCtrlEvent()
. You can generate CTRL+C with this API, so it may solve your problem if you call it with PyWin32
.
Update:
Here is my first ever python code. You can use send_ctrl_c
function to send CTRL-C to another process. I checked it and it works.
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)
This code is written based on here and here.
edited Nov 15 '18 at 12:44
answered Nov 14 '18 at 17:33
AfshinAfshin
3,1711626
3,1711626
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
add a comment |
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
I tried it. It doesn't work :(
– M. Denis
Nov 15 '18 at 7:32
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
@M.Denis updated reply with a working python code.
– Afshin
Nov 15 '18 at 12:44
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
In my case it is not working. I will try to explain you clearly. I have a script which records the audio in a live way. The user can stop the recording by pressing Ctrl+c. I want to generate the Ctrl+c for this case so that the user cannot record more n minutes. I edited the question with the code. Please check it.
– M. Denis
Nov 15 '18 at 14:26
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305694%2fsimulate-ctrlc-event-in-windows-10-using-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown