Afficher le nom de l'application associée à un fichier

Résolu
Le_gone Messages postés 2 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 23 décembre 2006 - 23 déc. 2006 à 13:37
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 23 déc. 2006 à 14:04
Bonjour à toutes et tous,

Ben voila, je suis tout nouveau  sur ce forum, et pour cause je viens de m'inscrire.

Le coté "mystérieux" et créatif de la programmation m'a depuis longtemps attiré (millieu années 80), mais je commence seulement à m'y mettre. (travail, famille, autres loisirs e.t.c ... Obligent.)

Je m'intéresse au VB, car c'est sur lui que je suis tomber en 1er. Cela aurait pu être un tout autre language, mais c'est ainsi.
Je préfère ne pas trop m'éparpiller car je suis un peu du genre mono-tache.
Et puis c'est uniquement par plaisir.

Actuellement, je suis en train de tenter de mettre au point un petit programme qui me permet de lancer l'application associée à un fichier que je séléctionne dans une listbox.
Aprés moultes recherches sur ce site et d'autres aussi, je suis parvenu à mes fins. 
Cependant, je souhaiterait avant de lancer l'application en question par un doubleclick, afficher le nom de cette application (dans un label par exemple) juste en sélèctionnant le fichier en question.
Je résume donc:
En séléctionnant un fichier dans une listbox, je souhaite afficher dans un label le nom de l'application associée qui ouvrira mon fichier.

Quelqu'un peut il m'aiguiller ?

Merci

2 réponses

Le_gone Messages postés 2 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 23 décembre 2006
23 déc. 2006 à 14:04
Je poste le code que j'ai écrit. je pense que si ce n'est pas indispensable, cela peut être fort utile ..

J'ai crée la fonction "DecoupageRadical" qui permet d'accéder rapidement (vu l'arborescence assez spécifique) au répertoire contenant les fichiers.

Public

Class Form1

'Découpage du radical pour cheminer dans l'arborescence jusqu'au répertoire correspondant

Private
Function DecoupageRadidal(
ByVal SélectionFractionRadical
As
String)
As
String

Dim FractionRad1
As
String
'1er répertoire de l'arborescence

Dim FractionRad2
As
String
'2ème répertoire de l'arborescence

Dim FractionRad3
As
String
'dernier répertoire de l'arborescence (qui contient le document)

Dim strRésultatRadical
As
StringstrRésultatRadical =

""
' initialisation

If Len(Radical.Text) = 5
Then
'Si le radical saisi comporte bien 5 caractèresFractionRad1 = Mid(SélectionFractionRadical, 1, 1)

'1er caractère du radical constituant le 1er répertoire de l'arborescenceFractionRad2 = Mid(SélectionFractionRadical, 2, 2)

'2ème et 3ème caractères du radical constituant le 2ème répertoire de l'arborescenceFractionRad3 = Mid(SélectionFractionRadical, 1, 5)

'Les 5 caratères du radical constituant le dernier répertoire de l'arborescencestrRésultatRadical =

"U:" & FractionRad1 &
"" & FractionRad2 &
"" & FractionRad3

End
IfDecoupageRadidal = strRésultatRadical

End
Function

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

End
Sub

Private
Sub btnSubmit_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnSubmit.Click

Dim ContenuRépertoire
As
String

Dim NouveauChemin
As
String

Dim MessageErreurRépertoire
As
String

' NouveauChemin contient le chemin d'accès entré par l'utilisateur.NouveauChemin = DecoupageRadidal(Radical.Text)

' Change l'emplacement au profit de NewPath.

TryChDir(NouveauChemin)

' Ceci vérifie que le chemin d'accès n'est pas vide.

Catch ex
As Exception When NouveauChemin ""MessageErreurRépertoire

"Saisissez un radical de 5 caractères !"

' Ceci intercepte les erreurs provoquées par un chemin d'accès non valide.

CatchMessageErreurRépertoire =

"Le radical saisie n'éxiste pas dans l'espace de référence CAE"

Finally

' N'affiche le message d'erreur que s'il existe une erreur.

If MessageErreurRépertoire <>
""
ThenMsgBox(MessageErreurRépertoire)

End
If

End
TryListeFichiers.Items.Clear()

' Recherche tous les fichiers.ContenuRépertoire = Dir(

"*.*")

If ContenuRépertoire =
""
ThenMessageErreurRépertoire =

"Le répertoire correspondant au radical saisie éxiste bien dans l'espace de référence CAE, mais il est vide !!!"MsgBox(MessageErreurRépertoire)

End
If

' Effectue une itération dans le contenu du répertoire.

Do
Until ContenuRépertoire =
""

' L'ajoute à la liste.ListeFichiers.Items.Add(ContenuRépertoire)

' Passe au fichier suivant.ContenuRépertoire = Dir()

Loop

End
Sub

Private
Sub lstFilePick_DoubleClick(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles ListeFichiers.DoubleClick 

'Appel de l'application associée au fichier sélectionné

Dim application
As
New Process()

Dim SélectionFichier
As
ObjectSélectionFichier = ListeFichiers.SelectedItem

' Vérifie qu'un fichier est sélectionné.

If SélectionFichier
Is
Nothing
ThenMsgBox(

"Sélectionnez un fichier.")

Exit
Sub

End
If

'Nom du fichier dont l'extension est connue du shell à ouvrirapplication.StartInfo.FileName = ListeFichiers.SelectedItem

'Démarrage du processus associé au type de fichier sélectionné par "lstFilePick.SelectedItem"application.Start()

'On libère les ressourcesapplication.Close()

 

End
Sub

Private
Sub ListeFichiers_SelectedIndexChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles ListeFichiers.SelectedIndexChanged

Dim Attributes
As FileAttribute

Dim AttributeResult
As
String

Dim LastAccess
As
Date

Dim Length
As
Long

Dim CeFichier
As
Object

Dim Emplacement
As
String

'Dim NomApplication As ObjectCeFichier = ListeFichiers.SelectedItem

 

' Vérifie qu'un fichier est sélectionné.

If CeFichier
Is
Nothing
ThenMsgBox(

"Aucun fichier n'est sélectionné.")

Exit
Sub

End
If

' Donne le nom du fichier sélectionnéLabelRésultatFichierSélectionné.Text = CeFichier

' Vérifie l'emplacement du fichierEmplacement = DecoupageRadidal(CeFichier)

' Donne l'emplacement du fichierLabelRésultatEmplacement.Text = Emplacement

' Vérifie les attributs du fichierAttributes = GetAttr(CeFichier)

If Attributes = 2
ThenAttributeResult =

"Lecture seule"

ElseIf Attributes = 32
ThenAttributeResult =

"Archive"

ElseIf Attributes = 34
ThenAttributeResult =

"Lecture seule et Archive"

ElseAttributeResult =

"Normal"

End
If

' Donne les attributs du fichierLabelRésultatAttributs.Text = AttributeResult

' Vérifie la date et l'heure du dernier accèsLastAccess = FileDateTime(CeFichier)

' Donne la date et l'heure du dernier accèsLabelRésultatDernierAccès.Text = LastAccess

' Vérifie la taille du fichier.Length = FileLen(CeFichier)

' Donne la taille du fichierLabelRésultatTaille.Text = Length

'Affiche le nom de l'application associée au type de fichier à ouvrir

' LabelResultatApplication.Text = A CODER > l'application associée au type de fichier

End
Sub

Private
Sub BoutonEffacer_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles BoutonEffacer.ClickRadical.Text =

""ListeFichiers.Items.Clear()
LabelRésultatFichierSélectionné.Text ""LabelRésultatEmplacement.Text
""LabelRésultatAttributs.Text ""LabelRésultatDernierAccès.Text
""LabelRésultatTaille.Text ""LabelResultatApplication.Text

""

End
Sub

Private
Sub BoutonQuitter_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles BoutonQuitter.Click

Me.Close()

End
Sub

Private
Sub Radical_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Radical.TextChanged

End
SubEnd

Class
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 déc. 2006 à 14:04
Je n'ai pas VB.Net, mais suis persuadé de ce qu'un pro de VB.Net te dira comment y déclarer la fonction ShellExecuteEx  de la
libraireie shell32.dll et utiliser les membres  lpClass et hkeyClass de la structure SHELLEXECUTEINFO à laquelle est associé son 1er et seul paramètre.
3
Rejoignez-nous