Is there a way that python can close a windows application (example: Firefox) ?
I know how to start an app, but now I need to know how to close one.
Is there a way that python can close a windows application (example: Firefox) ?
I know how to start an app, but now I need to know how to close one.
# I have used subprocess comands for a while
# this program will try to close a firefox window every ten secounds
import subprocess
import time
# creating a forever loop
while 1 :
subprocess.call("TASKKILL /F /IM firefox.exe", shell=True)
time.sleep(10)
in windows you could use taskkill
within subprocess.call
:
subprocess.call(["taskkill","/F","/IM","firefox.exe"])
/F
forces process termination. Omitting it only asks firefox to close, which can work if the app is responsive.
Cleaner/more portable solution with psutil
(well, for Linux you have to drop the .exe
part or use .startwith("firefox")
:
import psutil,os
for pid in (process.pid for process in psutil.process_iter() if process.name()=="firefox.exe"):
os.kill(pid)
that will kill all processes named firefox.exe
By the way os.kill(pid)
is "overkill" (no pun intended). process
has a kill()
method, so:
for process in (process for process in psutil.process_iter() if process.name()=="firefox.exe"):
process.kill()
If you're using Popen
, you should be able to terminate the app using either send_signal(SIGTERM)
or terminate()
.
In order to kill a python tk window named MyappWindow under MS Windows:
from os import system
system('taskkill /F /FI "WINDOWTITLE eq MyappWindow" ')
stars maybe used as wildcard:
from os import system
system('taskkill /F /FI "WINDOWTITLE eq MyappWind*" ')
Please, refer to "taskkill /?" for additional options.
An app(a running process) can be closed by it's name using it's PID(Process ID) and by using psutil
module. Install it in cmd using the command:
pip install psutil
After installing, run the code given below in any .py file:
import psutil
def close_app(app_name):
running_apps=psutil.process_iter(['pid','name']) #returns names of running processes
found=False
for app in running_apps:
sys_app=app.info.get('name').split('.')[0].lower()
if sys_app in app_name.split() or app_name in sys_app:
pid=app.info.get('pid') #returns PID of the given app if found running
try: #deleting the app if asked app is running.(It raises error for some windows apps)
app_pid = psutil.Process(pid)
app_pid.terminate()
found=True
except: pass
else: pass
if not found:
print(app_name+" not found running")
else:
print(app_name+'('+sys_app+')'+' closed')
close_app('chrome')
After running the code above you may see the following output if google chrome was running:
>>> chrome(xyz) closed
Feel free to comment in case of any error
On OS X:
killall Application
Replace Application with a running app of your choice.
In the same directory as this shell script, make a python file. In the python file, put these two lines of code:
from subprocess import Popen
Popen('sh shell.sh', shell=True)
Replace shell.sh
with the name of your created shell script.
from AppOpener import close
close("whatsapp")
close("telegram, brave")
close("name of ur application")
#pip install AppOpener