Gambas France BETA


Pas de compte ? Incription

Petit programme de fermeture automatique

À propos de ce code

Hello tout le monde les gens !

Voilà, il y a quelque temps je suis repasser sous Nux ! Et oui j'ai pas résister à l'appel ... mais du coup (vu que mon PC me sert aussi de lecteur DVD dans la chambre avant le dodo) je ne connaissais aucune ligne de commande permettant de fermer un programme après un temps donné sans éteindre le PC. Pur ça il y a le fameux shutdown -h tempsEnMinute.

Du coup, ayant quelques base de BASIC, j'ai DL Gambas et j'ai créer ce petit soft (qui n'en ai qu'a sa première version), et qui permet de fermer un programme choisi par l'utilisateur après un temps donné par l'utilisateur !

Je n'ai pas encore fait les gestion d'erreur mais ca ne va pas tarder !

Code source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
' Gambas class file

PUBLIC SUB Form_Open()

'-- Initialise le nom des boutons et des labels
ok.caption = "Lancer"
nomSoftLabel.Text = "Entrez le nom du logiciel à fermer:"
tempsMinutes.Text = "Entrez le temps en minutes :"
choisir_btn.caption = "Parcourir ..."
END

''-- Initialisation des variables
STATIC PUBLIC cheminSoftFermer AS STRING
PUBLIC tempsUser AS INTEGER
PUBLIC restant AS INTEGER
PUBLIC softAFermer AS STRING

PUBLIC SUB ok_Click()

'-- Stock les champs de textes dans les variables
softAFermer = nomSoft.Text
tempsUser = tempsUt.Text

'-- Vérifie si la textbox minutes indique un chiffre supérieur à 0 et indique quoi faire sinon demande a l'utilisateur de recommencer
IF tempsUser > 0 THEN
'-- Empeche toute interraction après avoir cliquer sur ok
nomSoft.Enabled = FALSE
tempsUt.Enabled = FALSE
ok.Enabled = FALSE
choisir_btn.Enabled = FALSE

'-- Initialise le timer
timer_fermeture.delay = tempsUser * 60 * 1000
timer_fermeture.Enabled = TRUE
tempsRestant.Text = "Lancement du compte à rebours avant la fermeture du programme"
ELSE
tempsRestant.Text = "Veuillez entrer un chiffre supérieur à 0. Merci"
ENDIF

END

PUBLIC SUB choisir_btn_Click()

'-- Déclare la variable pour définir le répértoire des applications
DIM repertoire AS STRING
repertoire = "/usr/bin/"

'-- Ouvre la boite de dialogue pour la séléction du soft à fermer
'-- Et après séléction indique ou doit aller le nom de fichier
Dialog.Title = "Choisir une applications parmis la liste suivante"
Dialog.Path = repertoire
Dialog.Filter = ["*", "Tous les fichiers"]
IF Dialog.OpenFile() THEN RETURN
nomSoft.Text = Dialog.Path
END

PUBLIC SUB Quitter_Click()

ME.Close

END

PUBLIC SUB timer_fermeture_Timer()

'-- Indique au Timer que faire après la fin du delai impartit
'-- Lance la commande killall puis rajoute le nom du logiciel
SHELL "killall -e " & softAFermer

'-- Attend 10 secondes avant de fermer le programme pour remercier l'utilisateur et l'informer que tout c'est bien passer
tempsRestant.Text = "Le programme vient d'être fermer. Bonne journée"
WAIT 10
ME.Close

END

Commentaires

Commentaire de gambix, Le 22/4/2014 à 13:13:58
Il y a du travail

Et utilise les timer à la place d une boucle
Commentaire de gambix, Le 22/4/2014 à 20:58:14
Il y a du travail

Et utilise les timer à la place d une boucle
Commentaire de gambix, Le 22/4/2014 à 20:59:14
Il y a du travail

Et utilise les timer à la place d une boucle
Commentaire de djoziris, Le 23/4/2014 à 01:15:11
Yep ...

Merci pour la réponse ... ouais je sais y a pas mal de job mais je viens a peine de m'y remettre ... donc un peut chaud lol ...

Mais suis déjà en train de plancher sur l'amélioration, les erreurs éventuelles etc ... parce que c'est vrai que c'est la version du pauvre la ! mdr
Commentaire de Flachy Joe, Le 25/4/2014 à 19:59:33
Salut,
il y a un souci là :
1
2
3
WHILE b <> a
'--Si les deux label sont identique on sort de la boucle et on passe à la suite, sinon on continue
IF b == a THEN

le cas b=a n'apparaîtra jamais puisque la boucle ne se fait que s'ils sont différents.

Des détails :
1
2
Label2.Text = b + 1
b += 1

-->
1
2
b += 1
Label2.Text = b


1
2
3
4
5
IF restant == 1 THEN
tempsRestant.Text = "Temps restant : " & restant & " minute"
ELSE
tempsRestant.Text = "Temps restant : " & restant & " minutes"
ENDIF

-->
1
2
tempsRestant.Text = "Temps restant : " & restant & " minute"
IF restant > 1 THEN tempsRestant.Text &= "s"
Commentaire de djoziris, Le 27/4/2014 à 02:02:53
Merci pour les idées et infos ! ;-)

J'ai revu tout mon code, ainsi que l'emplacement des boutons etc ...

et je me dit que cette fois ça à l'air pas trop mal ^^

MERCI ENCORE A VOUS !
Commentaire de didier18, Le 29/4/2014 à 16:14:39
Hello djoziris
L'idée est bonne et peut certainement être améliorée.
(vu que mon PC me sert aussi de lecteur DVD dans la chambre avant le dodo)

Tu dois certainement pouvoir ne sélectionner QUE les fichiers ouverts ?
Il ne me parait pas très judicieux d'avoir accès à tous les "process"...
Risque d'erreur, click malencontreux, si tu fait dodo et que tu as coupé les pattes de la mule, tu risques quelques déceptions le lendemain...
Un pré-filtre pourrait éviter ce genre de désagréments.
Par exemple la ligne 53 pourrait devenir :
Dialog.Filter = ["*.gambas", "Fichiers Gambas", "*", "Tous les fichiers"]
Ce qui feras apparaître tous les exécutables Gambas uniquement et en priorité et limiterai sérieusement la liste affichée (donc les sources d'erreur).
Mais comme tu le précise,
Je n'ai pas encore fait les gestion d'erreur mais ca ne va pas tarder !
...
Bonne continuation.
Commentaire de djoziris, Le 30/4/2014 à 00:31:51
Hello.

Merci pour l'idée... c'est vrai que je pourrais filtrer avec uniquement les applications ouvertes ... problème ... je ne sais pas comment faire.

L'idée serait d'affiché une liste de ce qui est ouvert ... exemple chrome, vlc, et libre office sont ouvert ... et il ne faudrait que ceux la dans la liste.

Ou alors, je pourrais supprimer la textbox et la remplacer par une listbox avec les appli les plus courrament utilisée sur Ubuntu, comme ça plus de soucis et chaque nom serait associé à une variable pour lancer le killall ...

Merci encore ...

vais bosser la dessus ;-)