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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Plus simplement, vous pouvez faire (si le fichier "Test.txt" se trouve dans le répertoire d'exécution) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Bonne prog
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager