[Résolu, mais pas expliqué..]
Bonjour.
Dans plusieurs de mes programmes, j'utilisais la commande suivante pour lancer un programme externe situé dans un autre répertoire, mais au même niveau que le script qui le lance:
Run (@Scriptdir & "\..\RepertoireDuProgrammeA_Lancer\Programme.exe")
la présence du @Scriptdir protège d'un éventuel changement de "Working Directory" par un "FileOpenDialog", par exemple, toujours piégeux.
Cette commande était équivalente à :
Run (D:\UnRepertoire\RepertoireDuScript\..\RepertoireDuProgrammeA_Lancer\Programme.exe)
Et, bien qu'un peu "curieuse" (encore que...), fonctionnait correctement, jusqu'au jour ou (ce matin), justement... ça ne fonctionne plus (et ceci sur plusieurs de mes programmes, dont certains que je n'ai pas touché, mais utilisé sans soucis ces jours-ci).
Le remplacement par:
FileChangeDir(@ScriptDir) ;-- Fixe la "Working Directory" à "@scriptdir"
Run ("..\RepertoireDuProgrammeA_Lancer\Programme.exe")
Remet les choses en ordre.
Avez-vous rencontré ce problème, et si oui, à votre avis, quelle en est la cause ...?
Certes, j'ai rétabli la situation, mais j'aimerais bien expliquer la chose.
Merci pour votre analyse et vos avis.
M.C.
Edit: pour illustrer le problème, des scripts de test.
Test 1: le "Process 2" n'est pas exécuté,
Test 2: le "Process 2" est correctement exécuté.
Je confirme que j'ai, depuis fort longtemps, toujours codé comme dans le "Test 1", et jusqu'à ce matin, ça fonctionnait nickel.
Mon PC aurait-il coulé une bielle ?
[R] Chemin de lancement d'un exécutable.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- mimione
- Niveau 4

- Messages : 91
- Enregistré le : mer. 30 avr. 2008 18:11
- Localisation : Bretagne
- Status : Hors ligne
[R] Chemin de lancement d'un exécutable.
- Fichiers joints
-
- TEST LANCEMENT.zip
- (427.45 Kio) Téléchargé 108 fois
Modifié en dernier par mimione le lun. 19 janv. 2015 08:11, modifié 2 fois.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
--------------------------------------------
Des malheurs évités le bonheur se compose.
Re: [..] Chemin de lancement d'un exécutable.
Les 2 tests fonctionnent chez moi...
AutoIt v3.3.12.0 et v3.3.13.19 (Beta)
AutoIt v3.3.12.0 et v3.3.13.19 (Beta)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Chemin de lancement d'un exécutable.
Ce code retourne quoi dans la console ?
Code : Tout sélectionner
#include <WinAPI.au3>
$pid = Run(@ScriptDir & "\..\Process2\Process 2.exe")
ConsoleWrite($pid & @CRLF & @error & @CRLF & @extended & @CRLF & _WinAPI_GetLastErrorMessage() & @CRLF & _WinAPI_GetLastError() & @CRLF)De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- mimione
- Niveau 4

- Messages : 91
- Enregistré le : mer. 30 avr. 2008 18:11
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Chemin de lancement d'un exécutable.
Orax
Votre code retourne:
0
1
193
87
(et pas d'exécution du script "Process 2")
La commande qui fonctionne (sans "@Scriptdir) donne:
6184
0
0
Il n’y a plus de fichier.
18
Suite à l'essai positif de jguinch, je viens de tester sur un PC portable, et les deux écritures fonctionnent, ce qui n'est pas fait pour me rassurer sur l'état de santé de mon PC principal...
A tout hasard, j'ai fait les manips suivantes:
> Ré-installation de AutoIt: Pas de changement...
> Restauration système à J-4 (ou tout fonctionnait): Pas de changement...
AUTRE TEST: ShellExecute(@Scriptdir & "\..\Process2\Process 2.exe") fonctionne correctement.
L'eau bénite, peut-être ?
M.C.
Votre code retourne:
0
1
193
87
(et pas d'exécution du script "Process 2")
La commande qui fonctionne (sans "@Scriptdir) donne:
6184
0
0
Il n’y a plus de fichier.
18
Suite à l'essai positif de jguinch, je viens de tester sur un PC portable, et les deux écritures fonctionnent, ce qui n'est pas fait pour me rassurer sur l'état de santé de mon PC principal...
A tout hasard, j'ai fait les manips suivantes:
> Ré-installation de AutoIt: Pas de changement...
> Restauration système à J-4 (ou tout fonctionnait): Pas de changement...
AUTRE TEST: ShellExecute(@Scriptdir & "\..\Process2\Process 2.exe") fonctionne correctement.
L'eau bénite, peut-être ?
M.C.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
--------------------------------------------
Des malheurs évités le bonheur se compose.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Chemin de lancement d'un exécutable.
Sur mon PC j'ai...... si le fichier "Process 2.exe" n'est pas exécutable. Par exemple en créant un "nouveau fichier texte.txt" et en le renommant en "Process 2.exe".
D'après MSDN Win32 Error Codes le code d'erreur 193 (0xC1) correspond à ERROR_BAD_EXE_FORMAT — %1 is not a valid Win32 application.
Ce qui est parfaitement logique dans mon cas puisque j'essayais d'exécuter un fichier .txt (vide) renommé en .exe.
Il faudrait voir aussi dans les journaux Windows (dans l'observateur d'événements), s'il y a une erreur qui serait enregistrée, juste après la tentative d'exécution de "Process 2.exe" (avec le test 1).
Je ferais aussi le test avec l'antivirus désactivé. Et éventuellement recompiler "Process 2.exe" si ce n'est pas déjà fait.
Code : Tout sélectionner
0
1
193
87D'après MSDN Win32 Error Codes le code d'erreur 193 (0xC1) correspond à ERROR_BAD_EXE_FORMAT — %1 is not a valid Win32 application.
Ce qui est parfaitement logique dans mon cas puisque j'essayais d'exécuter un fichier .txt (vide) renommé en .exe.
Il faudrait voir aussi dans les journaux Windows (dans l'observateur d'événements), s'il y a une erreur qui serait enregistrée, juste après la tentative d'exécution de "Process 2.exe" (avec le test 1).
Je ferais aussi le test avec l'antivirus désactivé. Et éventuellement recompiler "Process 2.exe" si ce n'est pas déjà fait.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- mimione
- Niveau 4

- Messages : 91
- Enregistré le : mer. 30 avr. 2008 18:11
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Chemin de lancement d'un exécutable.
Merci pour toutes ces suggestions.
Rien dans les journaux Windows qui concernerait ce problème, anti-virus hors de cause...
Je ne comprends vraiment pas pourquoi:
- Le problème est arrivé subitement,
- Run (@Scriptdir & "\..\Process2\Process 2.exe") ne fonctionne plus,
- ShellExecute(@Scriptdir & "\..\Process2\Process 2.exe") fonctionne toujours correctement.
Malheureusement, la plongée dans les entrailles de Windows touche vite à mes limites de compétence.
Tant pis si on n'arrive pas à "mettre le doigt" sur l'explication...
--------------------------------------
SAPERLIPOPETTE !!!! Après quelques manips de dernière chance:
> Run (@Scriptdir & "\..\Process2\Process 2.exe" & @CRLF) : NON (déjà vu)
> Run ("D:\Z DEVELOPPEMENT\MES PROJETS\00 TESTS ET RECHERCHES\TEST LANCEMENT\Process2\Process 2.exe"): NON
> Copie de "Process 2.exe" dans "D:"
> Run ("D:\Process 2.exe"): OUI !!!
et après ça:
> Run (@Scriptdir & "\..\Process2\Process 2.exe" & @CRLF) : OUI ...!!!...???
Et le problème a totalement disparu, y compris dans mes programmes anciens....
Explication bien difficile maintenant.
Problème résolu, mais de manière bien peu satisfaisante...
Merci pour vos tentatives, et bonne journée.
M.C.
Rien dans les journaux Windows qui concernerait ce problème, anti-virus hors de cause...
Je ne comprends vraiment pas pourquoi:
- Le problème est arrivé subitement,
- Run (@Scriptdir & "\..\Process2\Process 2.exe") ne fonctionne plus,
- ShellExecute(@Scriptdir & "\..\Process2\Process 2.exe") fonctionne toujours correctement.
Malheureusement, la plongée dans les entrailles de Windows touche vite à mes limites de compétence.
Tant pis si on n'arrive pas à "mettre le doigt" sur l'explication...
--------------------------------------
SAPERLIPOPETTE !!!! Après quelques manips de dernière chance:
> Run (@Scriptdir & "\..\Process2\Process 2.exe" & @CRLF) : NON (déjà vu)
> Run ("D:\Z DEVELOPPEMENT\MES PROJETS\00 TESTS ET RECHERCHES\TEST LANCEMENT\Process2\Process 2.exe"): NON
> Copie de "Process 2.exe" dans "D:"
> Run ("D:\Process 2.exe"): OUI !!!
et après ça:
> Run (@Scriptdir & "\..\Process2\Process 2.exe" & @CRLF) : OUI ...!!!...???
Et le problème a totalement disparu, y compris dans mes programmes anciens....
Explication bien difficile maintenant.
Problème résolu, mais de manière bien peu satisfaisante...
Merci pour vos tentatives, et bonne journée.
M.C.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
--------------------------------------------
Des malheurs évités le bonheur se compose.
