Ouais mais au lieu de me dire que j'y suis pas , tu pourrais pas me faire un exemple de se que tu entend par "surchargé" , tu sais je débute apres tout...
SVP!!
Ouais mais au lieu de me dire que j'y suis pas , tu pourrais pas me faire un exemple de se que tu entend par "surchargé" , tu sais je débute apres tout...
SVP!!
"Surcharger" n'est pas le terme exact... une surcharge (overload) est une méthode avec le même nom mais des paramètres différents. Ici, il s'agit de rédéfinir (override) dans la classe héritée une méthode de la classe de base.
slayer418: ça se fait comme ça :
Par exemple, supposons que la classe A ait une méthode X avec la signature suivante :
(Overridable indique que la méthode peut être redéfinie)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Overridable Sub X(int i)
Si une classe B hérite de A, elle peut redéfinir la méthode X :
(Overrides indique qu'il s'agit d'une redéfinition de la méthode)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Overrides Sub X(int i) ... End Sub
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ca semble tellement simple à vous voir écrire mais ...
Je comprend pas comment faire...
Edit: ca parait con... j'aurait jamais crue que se serait si dure que ca changer l'icone des fichier.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bah peut-etre que le mot héritage me dit rien mais que je m'en sert.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ouais j'ai déja vue ca dans des codes mais je sais pas à quoi ca sert vraiment... lol, je vous jure que je m'adapte vite , il suffit qu'on m'explique.
Je veux bien croire que tu t'adaptes vite, mais c'est un concept qui ne s'explique pas comme ça en 5 minutes... Il y a déjà plus de 40 messages dans cette discussion, dont une bonne partie est liée au fait qu'il te manque les bases pour comprendre les réponses qu'on te donne. De plus, le forum n'est pas destiné à donner des cours, mais à trouver des solutions sur des problèmes précis.
Donc j'insiste, il faut vraiment que tu suives un cours ! Il y a tout ce qu'il faut ici. Reviens quand tu en sauras plus sur la question, et là on pourra t'aider...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
OK!! je comprend
j'ai marquer :
dans une classe pis j'avais accès aux Controls de Form1, genre , Textbox1,Textbox2...ect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Inherits Form1
Je comprend, ca l'établie un partage.
Moi j'utilise pas la classe , BCmDev, j'ai compiler le projet du lien que tu m'a donner se qui à créé Edanmo.ShellExtension.dll que j'ai référencé dans mon projet.
Mauvaise réponse
Enfin, d'une certaine manière, c'est vrai, mais c'est beaucoup plus complexe que ça...
Justement, il faut que tu crées une classe !Moi j'utilise pas la classe , BCmDev, j'ai compiler le projet du lien que tu m'a donner se qui à créé Edanmo.ShellExtension.dll que j'ai référencé dans mon projet.
Comme je te l'ai dit, je ne vais pas te faire ici un cours sur la programmation objet. Il y en a partout sur le net, à commencer par ce site. Si tu ne fais pas l'effort de les lire, je ne vois pas pourquoi on ferait l'effort de t'aider.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bah la comment ca, je comprend...
Je veux pas de cours , je veux de l'aide...
Je sais débrouiller et je comprend vite.
Mais VB rhyme pas avec PHP(bah dans le fond oui mais ... ) alors j'ai besoin d'aide. .
Se que je comprend c'est que BCmDev pensais que j'utilisais la classe de Edanmo direct dans mon projet mais moi j'ai compiler le Shell Extension (Le lien qui ma donner et qui contient la classe Edanmo)
Les mecs, ne m'abandonnez pas comme ça , j'ai toujours un problème et ce n'est pas dû à mon manque de savoir, j'en sais quand même en masse.
Allez BCmDev SVP élabore un peu plus tes propos SVP, il faut que je réussisse!!
Tout d'abord je m'excuse pour avoir écrit cette horreur : il s'agit bien de redéfinition de la méthode OnExtractIcon et pas de surcharge.
slayer418, je te propose un petit tutoriel pour une extension du shell qui affiche une icône différente suivant qu'un fichier d'extension "customExtension" est vide ou non :
1 - création d'un nouveau projet, que tu enregistres pour COM (dans les propriétés du projet, onglet relatif à la compilation). Tu références Edanmo.ShellExtesions.
2 - tu crées la classe suivante :
3 - tu compiles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Option Explicit On Option Strict On Imports System Imports System.Drawing Imports Microsoft.VisualBasic Imports Edanmo.ShellExtensions Namespace CustomShellExtension < _ ExtensionFileTypes(".customExtension"), _ ComClass(CustomShellExtension.ClassId, CustomShellExtension.InterfaceId, CustomShellExtension.EventsId) _ > _ Public Class CustomShellExtension Inherits Edanmo.ShellExtensions.IconHandlerBase Public Const ClassId As String = "771B82BB-5A8C-43f0-B3E0-E3D25A1F7F95" Public Const InterfaceId As String = "F856C01B-36DE-4b7b-8EF4-2AE03CB90548" Public Const EventsId As String = "1C500ECD-EAC3-4ddd-9F34-AEC22AEF1AE9" Public Overrides Sub OnExtractIcon(ByVal Filename As String, ByVal IconIndex As Integer, ByRef LargeIcon As IntPtr, ByRef SmallIcon As IntPtr, ByVal LargeSize As Integer, ByVal SmallSize As Integer) Dim currentFileInfo As New System.IO.FileInfo(Me.Filename) Dim imagePath As String = "C:\ImageFull.bmp" If (currentFileInfo.Length = 0) Then imagePath = "C:\ImageEmpty.bmp" End If Dim Image As New Bitmap(imagePath) Dim Large, Small As Bitmap ' Create a large and small thumbnail Small = DirectCast(Image.GetThumbnailImage(SmallSize, SmallSize, Nothing, IntPtr.Zero), Bitmap) Large = DirectCast(Image.GetThumbnailImage(LargeSize, LargeSize, Nothing, IntPtr.Zero), Bitmap) ' Convert the thumbnails to icons LargeIcon = Large.GetHicon() SmallIcon = Small.GetHicon() Small.Dispose() Large.Dispose() Image.Dispose() End Sub Public Overrides Function OnGetIconLocation(ByRef IconFile As String, ByRef IconIndex As Integer, ByVal Flags As Edanmo.ShellExtensions.IconHandlerFlags) As IconHandlerReturnFlags Return IconHandlerReturnFlags.PerInstance Or IconHandlerReturnFlags.DontCache End Function End Class End Namespace
4 - tu peux voir que j'utilise les chemins "C:\ImageFull.bmp" et "C:\ImageEmpty.bmp". Tu les changes afin de pointer vers des images qui te conviennent et qui existent.
5 - tu crées deux fichiers de test : empty.customExtension et full.customExtension. Tu laisses le fichier empty.customExtension vide et tu écris un peu de texte dans full.custmExtension.
Tu remarqueras que l'extension cible est indiquée via l'attribut ExtensionFileTypes et que j'ai défini des GUIDs (à redéfinir pour tes propres extensions).
L'exemple est on ne peut plus trivial. Il est notamment évident que la gestion des icônes ne doit pas se faire ainsi.
Voilà, je pense que c'est clair, fais-moi un retour. Ce n'est vraiment pas compliqué et tu peux dire un grand merci à Eduardo A. Morcillo.
Merci encore une fois de m'aider!!
Nouveau Problème, et petit information, j'utilise VB.Net Express 2008.
Bon voila tout se que j'ai fait:
1 - J'ai créé un nouveau projet de type Bibliotheque de Classe, que j'ai enregistré pour COM (dans les propriétés du projet, onglet relatif à la compilation). et j'y ai référencé Edanmo.ShellExtensions.
J'ai pas trouver rien en rapport avec COM dans l'onglet "Compilation" dans les propriétés du projet.
2 - J'y ai mit la Classe
3 - J'ai changer le chemin de "C:\ImageFull.bmp" et "C:\ImageEmpty.bmp" (Par d'autre image bmp).
4 - J'ai compilé, se qui ma donné un fichier DLL portant le nom de mon projet.
5 - J'ai créé deux fichiers de test : empty.customExtension et full.customExtension. J'ai laissé le fichier empty.customExtension vide et j'ai écris un peu de texte dans full.custmExtension mais ils n'ont pas changé d'icone.
Donc j'en conclu que j'ai fait quelque chose pas correctement , je suspect l'Étape 1 avec L'enregistrement pour COM.
Mais je vois toujours pas comment ca va me permet dans mon programme de pouvoir changer l'icone d'un fichier spécifier.
Moi se que j'aimerais en final c'est que j'utilise SHChangeIconDialogW pour choisir un nouvelle icone pour le fichier.
Dans la version anglaise : onglet Compile, checkbox Register for COM interop.
Si tu veux vérifier que ton extension est bien déployée, va consulter la base de registres : clef HKEY_CLASSES_ROOT\.customExtension\shellex\IconHandler, valeur par défaut = {771B82BB-5A8C-43f0-B3E0-E3D25A1F7F95}.
Une fois que tu auras compris comment cela fonctionne, il te sera facile de faire une interface de paramétrage de ton extension et de gérer l'icône à afficher suivant ce paramétrage dans OnExtractIcon.
Tu es en horaires décalés ou dans un pays éloigné ?
Je sais pas si c'est pareil dans VB Express, mais dans Visual C# Express 2008 en français, l'onglet s'appelle "Générer", et la checkbox "Inscrire pour COM Interop". Et il faut faire défiler la scrollbar pour voir l'option apparaître... à moins bien sûr d'avoir un très grand écran
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Apres mainte recherche dans les propriétés du Projet , j'en conclu que la checkbox 'Inscrire pour COM Interop' n'est pas présante.
Pourtant j'ai lu à plusieurs endroit des gens l'utilisait...
Oh et je suis du Canada, Quebec.
Ben t'as pas dû bien chercher alors... cette checkbox existe sous Visual C# Express 2008 et sous Visual Studio 2008 (aussi bien pour les projets C# que VB).
Donc ça m'étonnerait que ça n'existe pas pour VB Express 2008 !
(cf. pièce jointe : projet "bibliothèque de classes" en VB.NET sous VS2008)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bon regarde , j'ouvre Visual Basic 2008 Express et je créer un projet de Classe et je vais exactement où ton image indique et je n'ai pas de checkbox 'Inscrire pour COM Interop'.
Je n'ai pas VS, mais j'ai, séparément, VB.Net 2008 et C# 2008.
Ben là je comprends pas... très bizarre cette affaire
De toutes façons, tu peux t'en sortir autrement je pense. Dans l'onglet Application, clique sur le bouton "Assembly information" et coche la check-box "Make assembly COM-visible". Ensuite, une fois compilé, tu devrais pouvoir l'inscrire manuellement avec regsvr32.exe :
NB: ce que je viens de proposer est très théorique, je ne l'ai pas testé et je ne peux pas garantir que ça va marcher...
Code : Sélectionner tout - Visualiser dans une fenêtre à part regsvr32.exe /i TaDll.dll
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager