Voici une petite procédure pour
récupérer le chemin du programme associé à une extension de fichier.
Celle ci permet par exemple d'ouvrir un document avec son application associée tout en récupérant le Processus ID (PID) de cette application, ce qui peut parfois être utile (cf ExeTermine(<Identificateur de processus>) ).
Bien qu'il soit possible d'utiliser LanceAppliAssociée("Lisezmoi.txt") pour ouvrir directement un document dans son application associée, cette fonction ne permet pas de récupérer le PID de l'application.
A la différence de LanceAppliAssociée, la fonction LanceAppli("NOTEPAD.EXE Lisezmoi.txt",exeActif,exePID) permet de lancer une application et de récupérer son PID.
Voici donc comment récupérer le PID d'une application lancée en ne connaissant que le nom du document à ouvrir :
Code :
1 2 3 4 5
| sDocChemin est une chaîne = ComplèteRep(fRepExe())+"Test.txt"
sDocExt est une chaîne = fExtraitChemin(sDocChemin,fExtension)
iPID est un entier
iPID = LanceAppli(Get_ExtensionAppliAssociee(sDocExt)+" "+sDocChemin,exeActif,exePID) |
Code :
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
| PROCEDURE Get_ExtensionAppliAssociee(_sExtension est une chaîne,_sMessErr est une chaîne="")
//L'extension doit être de la forme ".txt"
szFichierChemin est une chaîne ASCIIZ sur 255
szFichierNom est une chaîne ASCIIZ sur 255
szProgramme est une chaîne ASCIIZ sur 255
iResult est un entier
iIDFiTemp est un entier
bErreur est un booléen
//Créer un fichier temporaire
szFichierChemin = fRepExe()
szFichierNom = DonneGUID(guidBrut)+_sExtension
iIDFiTemp = fCrée(szFichierNom)
SI iIDFiTemp = -1 ALORS
_sMessErr = ErreurInfo(errMessage)
RENVOYER Faux
FIN
iResult = API("SHELL32","FindExecutableA",&szFichierNom,&szFichierChemin,&szProgramme)
SELON iResult
CAS 0
_sMessErr = "Mémoire pleine"
bErreur = Vrai
CAS 31
_sMessErr = "Pas d'association"
bErreur = Vrai
CAS 2
_sMessErr = "Fichier non trouvé"
bErreur = Vrai
CAS 3
_sMessErr = "Chemin non trouvé"
bErreur = Vrai
CAS 11
_sMessErr = "Mauvais format"
bErreur = Vrai
CAS 42
AUTRE CAS
bErreur = Vrai
FIN
SI PAS fSupprime(iIDFiTemp) ALORS
_sMessErr = ErreurInfo(errMessage)
FIN
SI bErreur ALORS
RENVOYER Faux
FIN
RENVOYER szProgramme |
Plus simplement, vous pouvez faire (si le fichier "Test.txt" se trouve dans le répertoire d'exécution) :
Code :
1 2 3 4 5 6 7 8 9
| szFichierNom est une chaîne ASCIIZ sur 255 = "Test.txt"
szProgramme est une chaîne ASCIIZ sur 255
iResult est un entier
iPID est un entier
iResult = API("SHELL32","FindExecutableA",&szFichierNom,Null,&szProgramme)
SI iResult = 42 ALORS
iPID = LanceAppli(szProgramme+" "+szFichierNom,exeActif,exePID)
FIN |
Bonne prog