j'aurai tres bien pu pour eviter d'avoir le dossier sources , mettre mes cpl dans ressources et lancer une copie de fichier de ressources a system32 depuis le script de VB ?
mais j'avais peur de pas trouver la manip pour prendre les droits sur un fichier system sous VB .
ca aurai été possible ou ca aurai coincé quelques part ?
System.IO.File.WriteAllBytes("C:\ange.cpl", My.Resources.ange)
Mais attention seule les fichiers possédants un Header PE peuvent être extraits de cette facon (Bytes/Bytes). Les autres de type .Reg, .txt, .bat,....ca ne fonctionnera pas.
- j'ai voulu faire une case "ajouter au clique droit" mais ce que je piges pas , c'est que l'application peut se retrouver n'importe ou sur le DD de l'user , j'ai voulu lancer un reg mais dans celui ci je suis obligé de renseigner le chemin de l'exe ?? comment reseigner un chemin qu'on ne connait pas a l'avance ???
C'est une variable qu'il te faut utiliser Nash.
Avant de vouloir créer une case à cocher pour permettre à l'utilisateur d'ajouter l'appli au clic droit il faut raisonner ainsi :
#######################ETUDE AVEC DES PHRASES SIMPLES #######################
-->Comment ajouter une application au clic droit ?
Grace au registre :
- en fusionnant un fichier .reg ou en écrivant directement dans le registre à l'aide de VbNet. Tu as retenu la 1ère solution à l'aide d'un fichier reg pouvant ressembler à cela :
Code : Tout sélectionner
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\DesktopBackground\shell\NCTD]
@="NCTD"
"Icon"="C:\\Windows\\NCTD.exe,0"
"Position"="Bottom"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\NCTD\command]
@="C:\\Windows\\NCTD.exe"
-->L'utilisateur décide de l'emplacement ou il peut exécuter NCTD.exe alors le chemin dans le fichier .reg est variable donc il faudra écrire le fichier .reg dans le code et l'enregistrer sur le DD de l'user. Ca permettra de définir la variable chemin et icon de l'application.
-->L'utilisateur exécute pour la 1ère fois le programme donc les entrées dans le registre ne sont pas présentes. La case est décochée lors du lancement de l'application
-->L'utilisateur a déjà l'application NCTD.exe au clic droit donc les entrées dans le registre sont déjà présentes. La case est cochée lors du lancement de l'application
################################################## SCENARIO L'APPLI AU CLIC DROIT ##############################################
L'utilisateur lance l'application NCTD.exe
L'appli détecte si la clé NCTD (cf le fichier .reg ci dessus) dedans le registre.
Selon l'existence de la clé NCTD l'appli coche la checkBox ou la décoche.
--------------Scénario alternatif L'appli existe au clic droit
L'utilisateur décoche la case pour supprimer l'appli du clique droit
--------------Scénario alternatif L'appli n'existe pas au clic droit
L'utilisateur coche la case pour ajouter l'appli au clique droit
####################### RAISONNER SUR L'APPLI AU CLIQUE DROIT #################
--> Comment exécuter du code au lancement du formulaire principal ?
Le code qui sera exécuter au lancement de l'application doit se situer dans le gestionnaire d'évènement Form1.Load (ou Form1 est le nom de ton formulaire principal. Dans ton cas NCTD).
--> Comment détecter si une clé de registre existe
A l'aide de l'espace de nom "My" : "My.Computer.Registry" placé dans une conditionnel. Il faut connaitre au préalable la structure du registre (Clé, nom, valeur).
--> Comment cocher/décocher une checkBox ?
En affectant une valeur à sa propriété "CheckState" :
- Coché
- Décoché
--> Comment implémenter une action cocher/décocher sur une CheckBox ?
Il faut créer le gestionnaire d'évènement "CheckedChanged" de la checkBox1 (Handles CheckBox1.CheckedChanged) en double-cliquant sur la CheckBox1 en mode concepteur de vues.
--> Comment créer un fichier .bat sur le Disque dur de l'utilisateur ?
Il faut créer une procédure (ex : CreateRegFile) dans laquelle on utilise la classe "StreamWriter" de l'espace de nom "System.IO".
--> Comment récupérer dans une variable le chemin complet (chemin + nom et extension du fichier) d'ou est exécuté l'application "NCTD.exe"
Avec cette variable :
--> Comment passer une variable en argument dans une signature de procédure ?
'Création de la procédure avec la variable en arguement
Private sub CreateRegFile(Byval ExePath as string)
'affichage de la variable dans une MessageBox
msgbox(ExePath)
End sub
'Utilisation de la procédure "CreateRegFile()" avec la variable "Application.ExecutablePath" dans le code
Voilà comment je résouds en partie certains problème :
- Que voulons-nous faire avec le projet
- Conception de l'interface uniquement
- Se poser des questions sur chaque fonctionnalité du projet
- diviser le problème en plusieurs petits
- élaborer des phrases simples de constatation
- élaborer des phrases simples de résolution
- Une méthode de raisonnement
- une connaissance minimal d'un langage de programmation
- Enfin du code à taper...
(ca c'est la mienne mais à toi de voir ce qui te convient le mieux;))
Bone prog.
NoN j'ai pas encore Internet Fixe je suis en Mobile avec ma clé 3G : 4H/ mois donc 5E en sus de mon abonnement téléphonie.
