Gambas France BETA


Pas de compte ? Incription

[Résolu] Lancer une application depuis Gambas

Ce sujet est résolu.

12
AuteurMessages
linuxos#16 Posté le 18/1/2011 à 22:56:00
Un peu de sel, de poivre et la crevette sera... Message pour Spheris,

En rapport avec le présent méssage de LanoueC.

Te serait il possible de mettre en ligne sur ton site http://gambaslinux.eg2.fr/
un petit projet Gambas que je viens de faire pour expliquer de visu le principe d'utilisation de SHELL ?

Si oui, comment puis je te le transmettre ?

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
LanoueC#17 Posté le 18/1/2011 à 23:34:00
linuxos

oui ca serait bien

tu as fais un exemple avec $PATH que je n'ai toujours pas réussi à afficher ni avec shell ni avec exec

pour les variables de lancement de prog c OK avec :
1
'lance xtermShell "$TERM" With ["TERM=xterm"] For Read As "Process"



:oops: :oops: :!: euhhhhh pour le path j'avais simplement oublié euhhhhhhh echo !!!

1
'Affiche le PathShell "echo votre path est $PATH \n " For Read As "Process"


a plus
LanoueC
manu#18 Posté le 19/1/2011 à 08:06:00
Avec Gambas ca roule !
Olivier,


Tu peux aussi le mettre sur Gambas Forge et tu as besoins de personne mais l'un n’empêche pas l'autre :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Foromus#19 Posté le 19/1/2011 à 12:26:00
Bonjour à tous,

Effectivement, avec l'espace après gedit, (donc : "gedit "), ça fonctionne normalement. Un truc comme ça, j'aurais pu chercher toute ma vie... Et là, non, pas de crochets...

J'ai aussi essayé pour les pdf avec "evince", ça fonctionne également. Je n'ai pas essayé avec "okular" ou d'autres.
C'est vrai que le souci de portage d'une machine à une autre doit être pensé, cela dit, le système Linux comporte une multitude de SE, aussi, il est un peu difficile de prévoir un truc qui fonctionnera partout. C'est peut-être aussi une des raisons qui font le choix de la console par nombre de linuxiens.

Encore merci pour ce cours qui m'a été fort profitable.
manu#20 Posté le 19/1/2011 à 13:04:00
Avec Gambas ca roule !Foromus,


Si tu code le maximum en gambas, ca marchera sur n'importe quel linux.

Si tu fait appel à des applications tierce à ton programme , il faut que tu test leur existence sur le DD. Je te met un bout de code d'une de mes applications qui utilise un logiciel en ligne de commande qui s'appel Nmap :

1
PUBLIC SUB Form_Open()'Teste si nmap est installé. Sort si ce n'est pas le cas ! If Exist("/usr/bin/nmap") = False Then Message.Title = "Impossible de Continuer !" Message.Warning(" Il semble que Nmap ne soit pas installé.\nVeuillez verifier dans votre gestionnaire de paquet\n et installez le.", "Quitter") Me.Close Quit EndifEnd


Voila, ça, c'est mis dans FMain, ça s’exécute à chaque lancement donc. C'est mieux que de rien faire


Tu as une autre possibilité, qui dans tons cas peut etre valable, c'est de faire un test sur le bureau utilisé (il faut que gb.desktop soit activé dans ton projet) et en fonction du bureau, tu lances telle ou telle application. C'est très utile aussi pour l'utilisation de la commande sudo (qui est une specificité aux distrib basées sur Debian). Aussi, je préfère utiliser Gksu ou kdeSu qui dépend du bureau utilisé...

Exemple :

1
PUBLIC SUB testBureau()DIM sDesktop AS STRING = Desktop.type IF sDesktop = "KDE" THEN SHELL "cd trunk && kdesu make install" FOR READ AS "Process" ELSE EXEC ["gksu", "make", "install", sMySvn] FOR READ AS "Process" ENDIF END
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
GarulfoUnix#21 Posté le 19/1/2011 à 13:09:00
By the wayManu ça sera encore mieux quand tu pourras installer automatiquement le programme manquant par le gestionnaire de paquet de la distribution pour l'utilisateur :) .
Et c'est pas plus difficile. ;)
manu#22 Posté le 19/1/2011 à 13:15:00
Avec Gambas ca roule !Ca, je sais pas comment tu fais, car les noms de paquets sont souvent différent d'une distrib à l'autre mais effectivement ce serais le mieux
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
GarulfoUnix#23 Posté le 19/1/2011 à 14:44:00
By the way
Ca, je sais pas comment tu fais, car les noms de paquets sont souvent différent d'une distrib à l'autre mais effectivement ce serais le mieux


Suffit de te créer un module pour ça :) .

Un bon SELECT CASE pour détecter la distribution,
Un bon SELECT CASE pour détecter le gestionnaire de paquet,

Une bonne utilisation de SHELL ou EXEC, et roule ma poule :) .
LanoueC#24 Posté le 20/1/2011 à 18:57:00
linuxos

Te serait il possible de mettre en ligne sur ton site http://gambaslinux.eg2.fr/
un petit projet Gambas que je viens de faire pour expliquer de visu le principe d'utilisation de SHELL


Bonjour

As tu déposé ton projet quelque part?
Ce serait intéressant pour tous les apprentis en Gambas comme moi!
linuxos#25 Posté le 20/1/2011 à 22:46:00
Un peu de sel, de poivre et la crevette sera... LanoueC,

Tu trouveras a ces adresses 2 petits exemple d'utilisation de la commande SHELL:

* CmdShell
* CmdProcessStresseur

Le 1er permet d'&xecuter n'importe quel commande au travers d'un process SHELL et d'en récupérer le résultat.

Le 2ème sert a stresser un système Linux en lançant plein de process simultanément et d'en voir le résultat et le comportement.

Désolé pour le retard.


Lien vers CmdShell

Lien vers CmdProcessStresseur


Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
LanoueC#26 Posté le 21/1/2011 à 17:29:00
Linuxos MERCI

bon j'essaie de comprendre ton code pour le stress !!

ben j'ai du soucis à me faire avec la prog Objet :shock:
linuxos#27 Posté le 21/1/2011 à 19:34:00
Un peu de sel, de poivre et la crevette sera... LanoueC,


En fait l'idée est assez simple a comprendre dans le fond.

Dans le programme CmdShell, j'utilise une variable (de type Process) pour recupere le pointer mémoire de la commande SHELL.
Or dans ce cas, 1 seul process ne peut etre lancer avec cette variable, jusque la c'est normal.
Pour pouvoir lancer plusieurs Process en même temps, il faudrait dans ce cas déclarer et utiliser plusieurs variables, ex: Process1, Process2, etc...
mais ne les rattachant tous au même gestionnaire d’événement (AS "Process").

Dans ce cas il est plus simple de gérer après ce qu'il y a faire lors de la remonter d’événements des process lancés par les fonction suivantes:

1
PUBLIC SUB Process_Read() ' Evenement lors de la remonté de texte de la commande lancé par SHELL SELECT CASE LAST CASE Process1 ' C'est le Process1 qui a renvoyé du texte PRINT "Process1 => Texte" CASE Process2 ' C'est le Process2 qui a renvoyé du texte PRINT "Process2 => Texte" END SELECTENDPUBLIC SUB Process_Kill() ' Evenement lors de l'arret d'un des Process lancés SELECT CASE LAST CASE Process1 ' C'est le Process1 qui c'est arrêté PRINT "Process1 => Arrêt" CASE Process2 ' C'est le Process2 qui c'est arrêté PRINT "Process2 => Arrêt" END SELECTENDPUBLIC SUB Process_Error(ErrorMessage AS String) ' Evenement lors d'une erreur d'un des Process lancés SELECT CASE LAST CASE Process1 ' C'est le Process1 qui a eu une erreur PRINT "Process1 => Erreur: " & ErrorMessage CASE Process2 ' C'est le Process2 qui a eu une erreur PRINT "Process2 => Erreur: " & ErrorMessage END SELECTEND


Cette Méthode fonctionne bien si il n'y a pas trop de Process, sinon il faut utiliser un tableau d'Objet (type Object[]) pour stocker
le pointer de chaque Process lancé et lorsque qu'un evenement apparait, faire une recherche du Process pointé par LAST dans le tableau des Object.

Le programme CmdProcessStresseur utilise le tableau d'objet car le nombre de process a lancer n'est pas fixe.

Voila, j'espère que je n'ai pas été trop brouillon.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
12