[python]Enlever la console en arriere plan

Résolu/Fermé
lonewolfs Messages postés 51 Date d'inscription samedi 2 juin 2007 Statut Membre Dernière intervention 17 octobre 2009 - 13 août 2007 à 17:07
lonewolfs Messages postés 51 Date d'inscription samedi 2 juin 2007 Statut Membre Dernière intervention 17 octobre 2009 - 14 août 2007 à 16:51
Bonjour a tous,

Je viens de créer avec python, une mini interface qui me permet d'acceder plus rapidement à certain programmes tel que la console, les services windows, le bloc-note, etc

Ca fonctionne mais lorsque les programmes se lancent, il apparait en arrière plan la console.

Pourtant mon executable est bien en .pyw et non en py.

Ma question est : que faut il que je fasse pour l'eliminer ?

Merci par avance pour votre aide.

from Tkinter import *
import os

def calculatrice():

	"Afficher la calculatrice"

	commande = os.system ('calc.exe')


def regedit():

	"Afficher la base de registre"

	commande =os.system ('regedit')


def cmd():

	"Afficher le menu dos"

	commande = os.system ('cmd.exe')


def notepad():

	"Afficher notepad"

	commande = os.system ('notepad.exe')


def services():

	"Afficher le tableau des services"

	commande = os.system ('services.msc')


fen1=Tk()

bou1 =Button(fen1, text='Calculatrice',command= (lambda:calculatrice()))

bou1.pack(side=LEFT)

bou2=Button(fen1,text='Base de registre', command=(lambda:regedit()))

bou2.pack(side=LEFT)

bou3=Button(fen1,text='Commande MS DOS',command = (lambda:cmd()))

bou3.pack(side=LEFT)

bou4=Button(fen1,text='Bloc-Note',command=(lambda:notepad()))

bou4.pack(side=LEFT)

bou5=Button(fen1,text='Services Windows', command=(lambda:services()))

bou5.pack(side=LEFT)

bou6=Button(fen1,text='QUITTER',command=fen1.destroy,fg='red')

bou6.pack(side=RIGHT)

fen1.mainloop()


Merci encore

lonewolfs
A voir également:

5 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 août 2007 à 00:58
C'est os.system qui lance le shell.
Essaie avec call du module subprocess:
import subprocess

subprocess.call("notepad.exe", shell=False)

Malheureusement je n'ai pas windows pour tester mais je peux voir ça demain.
0
Bonjour et encore une fois merci Killian,

Cette commande effectivement fonctionne et masque la console.

Je vais la regarder en profondeur, histoire de comprendre correctement ce qu'elle fait.

Merci encore

Amitiés

Lonewolfs
0
Ca marche, ca marche... mais bizarrement pas pour les services.msc de windows.

Il m'a fallut garder os.system pour cette commande.

C'est pas bien grave, tu m'as permis d'alleger mon script et d'enlever en majorité la console en arrière plan.

Elle est bien cette commande.

Si tu as une idée du bug (je sais que tu n'as pas windows mais au cas ou :))

Merci encore pour ton aide et ta grande disponibilité Kilian

Amitiés

Lonewolfs
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 août 2007 à 15:36
C'est parce que services.msc n'est pas un executable binaire traditionnel (fichier.exe), c'est un fichier au format xml qui est exécuté par c:\Windows\system32.exe\mmc.exe
Quand on double clique sur services.msc ou qu'on le lance dans le shell, windows associe automatiquement le fichier msc à mmc.exe.

Donc en fait ce qu'il faut lancer, c'est mmc.exe avec services.msc comme paramètre:
subprocess.call(("mmc.exe", "services.msc"), shell=False)

Astuce inspirée de ce site russe :-D
https://www.sql.ru/forum/-1/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lonewolfs Messages postés 51 Date d'inscription samedi 2 juin 2007 Statut Membre Dernière intervention 17 octobre 2009 5
14 août 2007 à 16:51
Encore merci beaucoup Kilian,

Je vais regarder ceci ce soir en rentrant

Merci encore

Lonewolf
0