Page 2 sur 5

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : dim. 24 juil. 2011 18:19
par Nash
Maintenant ton code pour ajouter un menu contextuel est très lourd, il y a plus simple mais c'est ton choix...
j'ai trouvé un ptit code de 3 ligne qui a l'air beaucoup mieux et simple :)

je le test pour autrre log ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : dim. 24 juil. 2011 18:29
par sh@rp
Nash a écrit :
Maintenant ton code pour ajouter un menu contextuel est très lourd, il y a plus simple mais c'est ton choix...
j'ai trouvé un ptit code de 3 ligne qui a l'air beaucoup mieux et simple :)

je le test pour autrre log ;)
3 lignes (lool) impossible il en faut beaucoup plus, agrémenté d'une gestion d'exception je t'en propose une dizaine pour créer le menu et environ 5 pour le supprimer. ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : dim. 24 juil. 2011 20:46
par Nash
3 pour mettre et 3 pour enlever ...

mais pas tester , je look ca peut etre demain ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : lun. 25 juil. 2011 10:45
par Nash
re :)

sans l'execption si la clé existe : sur clique bouton apres avoir choisi exe par openfiledialog qui a mis le chemin dans textbox1 et le nom dans label1:
nom = Me.Label1.Text

Key = My.Computer.Registry.ClassesRoot.CreateSubKey("DesktopBackground\shell\" & nom & "\command\")
My.Computer.Registry.SetValue("HKEY_CLASSES_ROOT\DesktopBackground\shell\" & nom & "\command\", "", Me.TextBox1.Text)
My.Computer.Registry.SetValue("HKEY_CLASSES_ROOT\DesktopBackground\shell\" & nom & "\\", "icon", Me.TextBox1.Text)
apres encore une ligne pour "bas , haut , milieu"
+ 1 ligne pour verification si clé existe :)

et pas de prob , ca marche tres bien ...

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : lun. 25 juil. 2011 11:29
par sh@rp
Nash a écrit :re :)

sans l'execption si la clé existe : sur clique bouton apres avoir choisi exe par openfiledialog qui a mis le chemin dans textbox1 et le nom dans label1:
nom = Me.Label1.Text

Key = My.Computer.Registry.ClassesRoot.CreateSubKey("DesktopBackground\shell\" & nom & "\command\")
My.Computer.Registry.SetValue("HKEY_CLASSES_ROOT\DesktopBackground\shell\" & nom & "\command\", "", Me.TextBox1.Text)
My.Computer.Registry.SetValue("HKEY_CLASSES_ROOT\DesktopBackground\shell\" & nom & "\\", "icon", Me.TextBox1.Text)
apres encore une ligne pour "bas , haut , milieu"
+ 1 ligne pour verification si clé existe :)

et pas de prob , ca marche tres bien ...


Quand je parle d'exception c'est "Try...Catch...ex...end try" et non une conditionnel "If ...end if".
Lorsque tu écris des valeurs dans le registre je te conseil d'utiliser la gestion d'exceptions ca évitera à l'utilisateur d'avoir des fenêtres de quelconques erreurs du framework. ;)

Ton code peut sembler fonctionner mais de ce que je peux lire il n'en découle aucune logique puisque tu utilises des variables non typées et de plus tu ne les utilises pas.
Voilà à quoi doit ressembler la création d'un menu contextuel au clic droit :

Code : Tout sélectionner

 Try
'déclaration d'une variable de type "clé de registre" nommée "Key" et initialisée à "Nothing"
                Dim Key As RegistryKey = Nothing
'création de la sous clé de registre puis affecation dans la variable "Key" 
                Key = Registry.ClassesRoot.CreateSubKey(RegPath & "\Shell\NCTD")
'création de la "donnée de valeur" nommée "Lancer NCTD" de la clé "Key"
                Key.SetValue("", "Lancer NCTD")
'création de la sous clé "command" puis de la donnée de valeur du "chemin de l'application"
                Key.CreateSubKey("command").SetValue("", Application.ExecutablePath)
'création du nom "Icon" et de sa valeur "chemin de l'application" concaténé aux caractères ",0" afin de représenter l'icône du programme
                Key.SetValue("Icon", Application.ExecutablePath & ",0")
'création du nom "Position" et de sa valeur "Bottom"
                Key.SetValue("Position", "Bottom")
' fermeture des resources mémoire occupées par la variable "Key"
                Key.Close()
'Gestionnaire d'exception 
            Catch ex As Exception
'Message à afficher avec l'exception trouvée (ex.Message)
                MessageBox.Show("L'erreur suivante est survenue : " & ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
Voilà pour la création de la clé

Mais il ne faut pas perdre de vue que ce code peut être réutilisé pour créer un menu contextuel selon la valeur de la variable sélectionnée par l'utilisateur : "Top, Center, Bottom" donc tu peut créer une procédure qui nécessite de lui passer cet argument comme ceci :

Code : Tout sélectionner

 Public Sub CreateRightClic(ByVal Posit As String)
            Try
                Dim Key As RegistryKey = Nothing
                Key = Registry.ClassesRoot.CreateSubKey(RegPath & "\Shell\NCTD")
                Key.SetValue("", "Lancer NCTD")
                Key.CreateSubKey("command").SetValue("", Application.ExecutablePath)
                Key.SetValue("Icon", Application.ExecutablePath & ",0")
                If Not Posit Is Nothing Then
                    Key.SetValue("Position", Posit)
                Else
                     Key.SetValue("Position", "Bottom")
                End If
                Key.Close()
            Catch ex As Exception
                MessageBox.Show("L'erreur suivante est survenue : " & ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub


D'autre variables peuvent être ajoutées dans la signature de ta procédure afin de la rendre utilisable pour créer n'importe quel menu contextuel selon :

- le nom de l'item ("Lancer NCTD")
- le nom de la sous clé ("\Shell\NCTD")
- la valeur de l'icône ("Application.ExecutablePath & ",0")

Voilà je te laisse réfléchir pour la création d'une fonction de suppression A+

PS : il ne faut pas se dire chouette ca fonctionne avec du code trouvé à droite et à gauche mais il faut en déduire la logique de raisonnement. ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : lun. 25 juil. 2011 12:31
par Nash
il ne faut pas se dire chouette ca fonctionne avec du code trouvé à droite et à gauche mais il faut en déduire la logique de raisonnement.
lol , c'est justement parce que celui la je le comprenais que je l'ai adopté ;)

mais maintenant que tu m'as enfin donné le tien , je regarde ca comme il faut :)

merci :)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : dim. 31 juil. 2011 15:49
par olive
Super sympa le résultat !
Merci de ce beau (et pratique) logiciel

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : dim. 31 juil. 2011 15:55
par sh@rp
olive a écrit :Super sympa le résultat !
Merci de ce beau (et pratique) logiciel
Tiens Olive ca fait longtemps qu'on ne t'a pas vu sur la toile . ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : lun. 1 août 2011 18:22
par Zinzin
olive a écrit :Super sympa le résultat !
Merci de ce beau (et pratique) logiciel
Nice de te revoir Olive ;)

Re: AAZ-Custo-Logon-Screen x86-x64 - V 1.1 by Nash

Posté : mar. 2 août 2011 21:59
par Nash
merci toolman , j'ai cherché un bout de temps mais pas trouvé , aors me servait de l'exe ;)

plus rapide , je test ca ;)