Pas de nom de fichier envoyé à l'ouverture

Signaler
Messages postés
33
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
6 mars 2013
-
Messages postés
33
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
6 mars 2013
-
Bonjour,
Je fais un programme capable d'installer en masse des apps Android. Mais je me suis dit qu'il serait intéressant d'associer le type de fichiers .apk à mon programme. Je l'ai donc ajouté dans les propriétés du projet, sous Publier > Options > Associations de fichiers. Jusque là tout va bien et quand j'ouvre un fichier .apk en double-cliquant dessus, mon programme s'ouvre. Comme l'adresse du fichier doit être récupérée par les arguments de ligne de commande, j'utilise une boucle for, pour tester, mais ça ne fonctionne pas:
Private Sub Principal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For i = 0 To Environment.GetCommandLineArgs.Length
        MsgBox(Environment.GetCommandLineArgs(i))
    Next
End Sub

Mais bizarrement, j'ai bien une messagebox avec l'adresse de l'exécutable, mais après mon programme s'ouvre, je n'en ai pas avec l'adresse du fichier. Savez-vous pourquoi ?
Merci

9 réponses

Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
Bonjour,

Regardes dans le registre Windows, il doit te manquer un "%1" à la fin de ton exécutable, je pense.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut

Voir aussi Command() qui te fournira la liste des paramètres passés derrière le nom de ton appli.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
33
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
6 mars 2013

Salut !
Déjà, j'ai une question : qu'est ce qu'on est censé mettre dans le champ ProgId ?

Pour la fonction Command(), ça fait pareil que Environment.GetCommandLineArgs, non ? En tout cas ça fait la même erreur.
Pour le %1 qui manque, je ne sais pas du tout, mais j'ai pas l'impression que ce soit vraiment normal le chemin qui est écrit dans HKEY_CLASSES_ROOT\.apk :
(Par défaut) : 0
AppId : Android Installer.application, Culture=neutral, PublicKeyToken=82a9325de6dc1083, processorArchitecture=x86
DeploymentProviderUrl : file:///C:/Users/Thomas/Documents/Visual%20Studio%202010/Projects/Android%20Application%20Batch%20Installer%20Creator/Android%20Application%20Batch%20Installer%20Creator/publish/Android%20Installer.application
GUID : {a791e2b1-2152-4186-b56f-ce0954713aeb}
Voilà. Effectivement, il n'y a pas de %1 derrière, mais même en le rajoutant ça ne change rien.
Merci
Messages postés
8
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
7 décembre 2012

Salut Thomas
Je me trouve aujourd'hui confronté au même problème que toi !
L'association des fichiers se passe bien (changements d'icône), et quand je double-clique sur le fichier l'application s'ouvre bien mais il n'y a pas d'arguments de passés (à part le nom du programme lui-même en 0) !!!
As tu trouvé une solution à ce problème ??
Merci
Gérard
Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
Bonjour,

Dans la ligne de commande définie lors de l'association, tu as bien mis un "%1" quelque part ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
33
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
6 mars 2013

Je vais essayer ça merci du déterrage de post, ce sera peut être la bonne solution !
Messages postés
8
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
7 décembre 2012

Bonjour,
Oui il y a bien le %1 dans la clé du registre ...\shell\open\command
Cette clé a été créée par l'application lors de son déploiement.
Messages postés
8
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
7 décembre 2012

Bonjour,
J'ai trouvé.
Dans le cas d'une application déployée par ClickOnce il ne faut pas utiliser Environment.GetCommandLineArgs(). Il faut passer par
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length et AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData()
Voila voila
Messages postés
33
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
6 mars 2013

OK je vais voir ça. Si ça marche je te remercie énormément !