Page 1 sur 1

RunProgram qui ne run pas...

Publié : ven. 20/janv./2023 21:35
par SPH
Salut à tous.

Je me demandais pourquoi ce code ne fonctionnait pas toujours selon l'EXE à lancer :

Code : Tout sélectionner

RunProgram("c:\Scrab_FR\fin\fin.exe")
Bien sûr, l'EXE visé existe et s'ouvre quand je double clique dessus mais pas quand je le lance avec ce code ci-dessus. Y a t'il une subtilité que je n'ai pas capté ?
L'EXE en question est un code PB compilé. Il ne s'ouvre jamais.
Par contre, un autre programme compilé fait en PB s'ouvre à tous les coups.

Pourquoi ?

Re: RunProgram qui ne run pas...

Publié : ven. 20/janv./2023 23:13
par case
et comme ca?

Code : Tout sélectionner

RunProgram("c:\Scrab_FR\fin\fin.exe","","c:\Scrab_FR\fin\")

Re: RunProgram qui ne run pas...

Publié : ven. 20/janv./2023 23:35
par SPH
Ha ouai, super. Ca a l'air de marcher...

Ou était la subtilité ? :?: :!:


PS : grand merci

Re: RunProgram qui ne run pas...

Publié : sam. 21/janv./2023 10:42
par Marc56
Cela voulait dire que ton programme a besoin d'être dans le répertoire pour démarrer car il utilise d'autres éléments présents dans ce répertoire.

donc RunProgram avec changement de répertoire

Code : Tout sélectionner

RunProgram("c:\Scrab_FR\fin\fin.exe", "", "c:\Scrab_FR\fin\")
soit changer de répertoire avant

Code : Tout sélectionner

SetCurrentDirectory("c:\Scrab_FR\fin\")
; puis (plus besoin de préciser le répertoire)
RunProgram(fin.exe)
:wink:

Re: RunProgram qui ne run pas...

Publié : sam. 21/janv./2023 12:15
par SPH
Dacodac, merci pour cette précision. 😎

Re: RunProgram qui ne run pas...

Publié : sam. 21/janv./2023 12:21
par case
RunProgram(Fichier$ [, Parametres$, RepertoireCourant$ [, Options [, programmeEmetteur]]])

Fichier$ Le nom de l'exécutable, y compris son chemin.
Parametres$ (optionnel) Les paramètres de ligne de commande qui seront transmis au programme.
RepertoireCourant$ (optionnel) Le répertoire qui sera alors le répertoire courant pour le programme lancé.

par défaut le repertoire courant par défaut du logiciel exécute par runprogram est le même que celui du programme qui le lance
dans ton cas si ton programme principal
est dans "c:\Scrab_FR\" quand tu lance RunProgram("c:\Scrab_FR\fin\fin.exe") il vas utiliser comme répertoire par défaut "c:\Scrab_FR\"
des lors si il a besoin de ressources se trouvant dans "c:\Scrab_FR\fin\" il ne vas pas les trouver dans "c:\Scrab_FR\" vas planter et donc tu aura l'impression qu'il ne se lance pas.
changer le répertoire courant pour le programme lancé permet de dire au programme lancé (fin.exe) que son répertoire principal est "c:\Scrab_FR\fin\"

si tu change le répertoire par défaut avant de lancer ton fin.exe comme l'indique marc56
SetCurrentDirectory("c:\Scrab_FR\fin\")
; puis (plus besoin de préciser le répertoire)
RunProgram(fin.exe)
n'oublie pas de le remettre a la valeur précédente ensuite sinon ton programme principale utilisera le répertoire par défaut pour trouver ses ressources et
plantera de la même manière
SetCurrentDirectory("c:\Scrab_FR\fin\")
; puis (plus besoin de préciser le répertoire)
RunProgram(fin.exe)
SetCurrentDirectory("c:\Scrab_FR\")
c'est plus propre de modifier le répertoire courant lors du runprogram a mon avis :)