ligne de code et aide a la creation de NCTD ... peut servir

Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: NCTD by Nash

Message par Nash »

merci l'ami

je look tout ca comme il faut ;)

Ta boite de dialogue "A propos" peut être créé dans ton projet directement pas besoin de créer un autre projet (dans ton cas : Copyr.exe) c'est inutile.
Pour ajouter une boite de dialogue dans un projet : Clique-droit sur le nom de ton projet dans "l'explorateur de solutions" puis "ajouter/Un nouvel élément/boite de dialogue A propos".
Tu supprimes ce dont tu n'as pas besoin dans cette boite de dialogue et y ajoute ce que tu veux. Enfin pour l'appeler dans ton projet grace à un bouton : "AboutBox1.showDialog".
lol ca , j'ai cherché pendant au moins 1 heure , impossible de trouver alors j'ai re-creer un projet ;) , je rectifierais:)

- 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 ??? :)
7- Les informations dans ta boite "A propos" ne sont pas visibles : Nom, Version, Copyright. Ta couleur de police est-elle noir ou bien tu ne les a tout simplement pas rempli pour le moment ?
Image


merci pour ton aide ;)

ps: deja le net ?? :)content de te revoir :)
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: NCTD by Nash

Message par Nash »

version 1.1.00

correction divers des defaults cités plus haut ;)
suppression de copyr.exe pour un diag normal :)


@ sh@rp :

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 ?
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: NCTD by Nash

Message par sh@rp »

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é

Code : Tout sélectionner

CheckBox1.checkstate = CheckBox1.checked
- Décoché

Code : Tout sélectionner

CheckBox1.checkstate = CheckBox1.Unchecked
--> 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 :

Code : Tout sélectionner

Application.ExecutablePath

--> 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

Code : Tout sélectionner

CreateRegFile(Application.ExecutablePath)


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. ;)
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: NCTD by Nash

Message par sh@rp »

Arff j'allais oublier le rendu de la AboutBox chez moi :

Image

A+
Modifié en dernier par sh@rp le dim. 10 juil. 2011 17:09, modifié 2 fois.
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: NCTD by Nash

Message par Nash »

oups bein merde bizarre ca :):)

l'ai virer pour une boite de dialogue ;) j'espere ca ira mieux lol

j'ai souvent cet erreur , que je corrige mais qui revient au debogage ou generation :
"exemple erreur' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
(exemple erreur etant un nom bidon qui remplace une fonction genre "createregfile" ou autre ;)
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: NCTD by Nash

Message par sh@rp »

Encore un truc simple à mettre en place. ;) ..... :

Tu pourrais aussi détecter et afficher en tps réel l'image de l'horloge courante de l'utilisateur en utilisant Resource Hacker :

-->Extraire la resource 5000 de type "PNGFILE" du fichier "timedate.cpl" dans "C:\timedate.png" sous DOS :

Code : Tout sélectionner

R.exe -extract C:\Windows\System32\timedate.cpl, C:\timedate.png, PNGFILE, 5000,
-->Sous VbNet :

Code : Tout sélectionner

Process.Start("C:\R.exe", "-extract C:\Windows\System32\timedate.cpl, C:\timedate.png, PNGFILE, 5000,")
-->Charger une image dans une PictureBox sous VbNet :

Code : Tout sélectionner

Me.pictureBox1.image = Image.fromFile("C:\timedate.png")
A+
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: NCTD by Nash

Message par Nash »

yesss ca jy avais pas penser ;
My.Computer.FileSystem.DeleteFile("C:\timedate.png")
Process.Start("sources\ResHacker.exe", "-extract C:\Windows\System32\timedate.cpl, C:\timedate.png, PNGFILE, 5000,")
Me.PictureBox4.Image = Image.FromFile("C:\timedate.png")
alors bizarrement , ca marche bien la 1ere fois mais une fois le fichier timedate.png créé dans c: , si je rouvre le log , ca va plus ..

j'en ai conclu que si le fichier existait deja , il ne faisait pas la commande et j'ai donc rajouté la fonction :

My.Computer.FileSystem.DeleteFile("C:\timedate.png")
mais la big erreur , le fichier ne peut pas acceder a c:\timedate.cpl

je cherche ,

j'ai egalement rajouter cette fonction au clique de modification , comme ca ca actualise ma picturebox au changement d'horloge si l'utilisateur ne ferme pas le log de suite ;)

tres interessant , j'adore meme si ca prends un temps enorme :):)
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: NCTD by Nash

Message par sh@rp »

Nash a écrit :yesss ca jy avais pas penser ;
My.Computer.FileSystem.DeleteFile("C:\timedate.png")
Process.Start("sources\ResHacker.exe", "-extract C:\Windows\System32\timedate.cpl, C:\timedate.png, PNGFILE, 5000,")
Me.PictureBox4.Image = Image.FromFile("C:\timedate.png")
alors bizarrement , ca marche bien la 1ere fois mais une fois le fichier timedate.png créé dans c: , si je rouvre le log , ca va plus ..

j'en ai conclu que si le fichier existait deja , il ne faisait pas la commande et j'ai donc rajouté la fonction :

Essayes ca :

Code : Tout sélectionner

If System.IO.File.Exists("C:\timedate.png") Then
        My.Computer.FileSystem.DeleteFile("C:\timedate.png")
End If
Car si tu ne mets pas de conditionnel il cherchera à effacer un fichier qui n'existe peut-être pas donc un message d'erreur apparaitra (lors de la première utilisation du soft quand le fichier .png n'existe pas).

My.Computer.FileSystem.DeleteFile("C:\timedate.png")
mais la big erreur , le fichier ne peut pas acceder a c:\timedate.cpl

je cherche ,
Oui car "timedate.cpl" n'est pas placé ici : "C:\timedate.cpl" mais dans "C:\Windows\system32\timedate.cpl". OO

Bon courage.
A+
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
Prof
Fondateur
Fondateur
Messages : 8295
Enregistré le : lun. 5 avr. 2010 20:07
Localisation : Vosges
A remercié : 4 fois
A été remercié : 13 fois
Contact :
    unknown unknown

Re: NCTD by Nash

Message par Prof »

Bien joué l'ami,

Content de voir que tu t'éclates toujours, ok pour des tests fin août !! :)
Règlement du forum
Toute demande d'aide ou de liens par MP est inutile !
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: NCTD by Nash

Message par Nash »

arff

a premiere vue , avec la fonction "Image.FromFile" , l'image reste chargé en memoire et ne peux pas etre modifier ou supprimer..

j'ai essayer avec la fonction " Image.FromStream(photoStream)"
qui soit disant avec la fonction "photoStream.Close" permet de liberer l'image et la supprimer ensuite :(

meme erreur :)
mais si je mets ca dans (Private Sub NCTD_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load)

Process.Start("sources\ResHacker.exe", "-extract C:\Windows\System32\timedate.cpl, C:\timedate.png, PNGFILE, 5000,")
Dim photoStream As FileStream = New FileStream("C:\timedate.png”,FileMode.Open)
pictureBox3.Image = Image.FromStream(photoStream)

et que je met cette fonction au moment de la fermeture du log ?

photoStream.Close
File.Delete("C:\timedate.png”)

ca devrait aller non ?

par contre quel est l endroit ou je peux mettre une commande dans la fermeture du log ??

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

cette ligne ?????

attention a ton forfait ;)
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Répondre