Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Démarrer l'application via un fichier associé selon une extension donnée

5 réponses
Avatar
David Bouchard
Salut, j'aimerais permettre au utilisateur de mon programme de démarrer
l'application via les fichiers associés à mon programme. Pour l'instant,
j'ai réussi à faire en sorte que les fichiers de l'extension voulu démarre
mon application, par contre, je voudrais que ceux-ci se charge aussi dans
l'application. Autrement dit, lorsque l'on double-clique sur un fichier
Excel par example, automatiquement, Excel démarre et le fichier se charge
dans excel. Donc, je voudrais optenir le même résultat. Alors comment faire
pour réaliser ceci. J'avais tenté d'utiliser ceci

Public Shared Sub Main(ByVal s() As String)

If s.Length <> 0 Then

dim Fichier as string = s(0)



End If

End Sub

Mais le nom de fichier n'est pas complet malheureusement, il a un format
plus court et donc incompatible avec mon application. Donc, si quelqu'un
sait comment optenir soit le chemin du fichier au complet, ou une autre
solution, merci de votre aide.



David

5 réponses

Avatar
Fred
Dans son message %
David Bouchard nous dit :


Mais le nom de fichier n'est pas complet malheureusement, il a un
format plus court et donc incompatible avec mon application. Donc, si
quelqu'un sait comment optenir soit le chemin du fichier au complet,
ou une autre solution, merci de votre aide.



C'est quoi un nom de fichier incomplet ? Et un format plus court ?
Si par hasard le chemin était tronqué au niveau du premier espace dans la
chaîne, alors il s'agit d'un problème d'enregistrement de l'association
extension - programme.

MonProgramme.exe "%1"

Les guillemets y sont-ils ?

Si ce n'est pas cela, précise ta question en donnant éventuellement un
exemple de ce que tu récupères comme chemin dans le programme.

--
Fred
Avatar
David Bouchard
Merci pour ta réponse, en faite, je n'avais pas placé de guillemets mais
j'ai essayé d'en placé et le résultat reste le même. Voici l'example du
chemin que je récupère:

C:DOCUME~1bouchardBureauDAVIDB~1.BUD

Autrement dit, je voudrais qu'il n'est pas les symbole ~ ainsi que
l'extention de mon fichier à été coupé, il manque une lettre au bout.

Merci de votre aide

David

"Fred" a écrit dans le message de news:

Dans son message %
David Bouchard nous dit :


Mais le nom de fichier n'est pas complet malheureusement, il a un
format plus court et donc incompatible avec mon application. Donc, si
quelqu'un sait comment optenir soit le chemin du fichier au complet,
ou une autre solution, merci de votre aide.



C'est quoi un nom de fichier incomplet ? Et un format plus court ?
Si par hasard le chemin était tronqué au niveau du premier espace dans la
chaîne, alors il s'agit d'un problème d'enregistrement de l'association
extension - programme.

MonProgramme.exe "%1"

Les guillemets y sont-ils ?

Si ce n'est pas cela, précise ta question en donnant éventuellement un
exemple de ce que tu récupères comme chemin dans le programme.

--
Fred





Avatar
Fred
Dans son message %
David Bouchard nous dit :

Voici
l'example du chemin que je récupère:

C:DOCUME~1bouchardBureauDAVIDB~1.BUD




Bonsoir,
Je ne connais pas ce problème. C'est sous 98 ou Me ?
As-tu essayé de récupérer les arguments de la ligne de commande par
l'intermédiaire de la propriété System.Environment.CommandeLine ?

D'autre part, ce chemin est valide. Qu'est-ce qui pose problème dans son
utilisation ?
Tiens-nous au courant.

--
Fred
Avatar
David Bouchard
En faite, j'ai essayé System.Environment.CommandLine et le problème est le
même. J'ai utilisé System.Environment.CurrentDirectory et celui-ci me
retourne bien le chemin complet d'où provient mon fichier, par contre, il me
manquerait le nom du fichier pour réglé complètement mon problème. Pour ce
qui est de la question à propos de mon système d'exploitation, j'utilise XP
pro. Mon problème avec ce format de chemin est que j'ai besoin d'obtenir le
nom réel complet du fichier puisque je fais un traitement sur celui-ci par
la suite lors de son ouverture et si celui-ci n'est pas complet, cela
engendre une erreur et même si je corrigerait le problème d'erreur, ceci ne
me satisferait pas puisque j'utilise ce nom par la suite dans mon
application. Est-ce possible que mon problème parvient de la façon d'écrire
dans la base de registre même si je doute de cette possibilité. Voici de
qu'elle façon je m'y prends.

Dim oRegKey As Microsoft.Win32.RegistryKey =
Microsoft.Win32.Registry.ClassesRoot

oRegKey = oRegKey.CreateSubKey(".BUDG")

oRegKey.SetValue("", "Budget.Projet")

oRegKey.Close()

oRegKey = Microsoft.Win32.Registry.ClassesRoot

Dim oRegKeyOpenCommand As Microsoft.Win32.RegistryKey

oRegKeyOpenCommand =
oRegKey.CreateSubKey("Budget.Projetshellopencommand")

oRegKeyOpenCommand.SetValue("",Me.GetType.Assembly.Location & " ""%1""")

oRegKeyOpenCommand.Close()

Dim oRegKeyDefaultIcon As Microsoft.Win32.RegistryKey

oRegKeyDefaultIcon = oRegKey.CreateSubKey("Budget.ProjetDefaultIcon")

Dim sICO As String

sICO = Me.GetType.Assembly.Location

sICO = sICO.Substring(0, sICO.LastIndexOf("")) & "Ico.ico"

oRegKeyDefaultIcon.SetValue("", sICO)

oRegKeyDefaultIcon.Close()

oRegKey.Close()

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)



Merci beaucoup de votre aide, disons que vous pourriez m'épargner beaucoup
de temps de casse-tête.

David



"Fred" a écrit dans le message de news:

Dans son message %
David Bouchard nous dit :

Voici
l'example du chemin que je récupère:

C:DOCUME~1bouchardBureauDAVIDB~1.BUD




Bonsoir,
Je ne connais pas ce problème. C'est sous 98 ou Me ?
As-tu essayé de récupérer les arguments de la ligne de commande par
l'intermédiaire de la propriété System.Environment.CommandeLine ?

D'autre part, ce chemin est valide. Qu'est-ce qui pose problème dans son
utilisation ?
Tiens-nous au courant.

--
Fred





Avatar
Fred
"David Bouchard" a écrit dans le message de
news:
Salut, merci de votre aide, mais j'ai trouvé une façon qui fonctionne assez
bien, en faite, je considère que ce n'est pas la méthode idéal mais pour
l'instant, elle me convient. J'apprécierait quand même que si vous trouvez
mieux, de me le faire savoir. La méthode que j'ai utilisé est la voici:

J'ai premièrement obtenue le le répertoire avec
System.Environment.CurrentDirectory , ensuite, je me suis créer un
directoryInfo et j'ai extrait tout les fichiers de ce répertoire à l'aide
GetFiles dans un tableau de FileInfo. Ensuite, j'ai créé un fileinfo à
l'aide du fichier retourné par le commandline. Finalement, j'ai fait un for
each sur tous les fichiers du directoryinfo et je compare le Lenght, le
CreationTime, LastWriteTime et LastAccessTime de chaque fileInfo du
directoryInfo avec le FileInfo créer avec le commandLine. Ceci m'assure que
le fichier est le même ou presque. Disons que les chances que deux fichiers
possèdent exactement toutes ces mêmes caractéristiques soient quasiement
nuls mais pas impossible et c'est pourquoi je préférait obtenir une méthode
plus simple et plus efficace.

Voici mon code pour faire ce que j'explique plus haut

Dim val As String = s(0)
Dim Fichier As String
Dim Directory_Info As IO.DirectoryInfo = New
IO.DirectoryInfo(System.Environment.CurrentDirectory)
Dim Files_Infos() As IO.FileInfo = Directory_Info.GetFiles
Dim File_Info_Clicked As IO.FileInfo = New IO.FileInfo(val)
For Each f As IO.FileInfo In Files_Infos
If f.Length = File_Info_Clicked.Length Then
If f.CreationTime = File_Info_Clicked.CreationTime Then
If f.LastWriteTime = File_Info_Clicked.LastWriteTime Then
If f.LastAccessTime = File_Info_Clicked.LastAccessTime Then
Fichier = f.FullName
Exit For
End If
End If
End If
End If
Next

Bonjour,
Je pensais effectivement jeter un coup d'oeil au fileinfo. Je vais regarder
du côté du système s'il y n'y a pas moyen de "forcer" l'utilisation des nom
longs, lors de l'utilisation du paramètre %1. Je n'ai rien trouvé dans la
MSDN à ce sujet.