Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > Contribuez
Contribuez Vos contributions pour la rubrique Windev : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/08/2011, 16h30   #1
bastiencb
Membre régulier
 
Inscription : août 2005
Messages : 56
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 56
Points : 70
Points : 70
Par défaut Windev : Connaître le chemin d'une application associée à une extension de fichier

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
bastiencb est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h39.


 
 
 
 
Partenaires

Hébergement Web