Avatar billede MadsHaupt Juniormester
29. september 2013 - 16:17 Der er 6 kommentarer

Shell Icon Handler i visual basic

Er der nogen der kan give mig et minimalt eksempel på en Shell Icon Handler?.
Avatar billede MadsHaupt Juniormester
30. september 2013 - 13:27 #2
Ja det har jeg, men jeg har ikke kunne få en overblik.
Avatar billede MadsHaupt Juniormester
30. september 2013 - 16:23 #3
Jeg tror moske at problemet er at jeg ikke helt ved hvordan man registrere shell icon handler'en.
Avatar billede MadsHaupt Juniormester
30. september 2013 - 17:25 #4
Mit problem er at jeg ikke ved hvordan jeg registrerer CLSID til min shell icon handler.
Avatar billede MadsHaupt Juniormester
01. oktober 2013 - 11:27 #5
Jeg har prøvet et lave en Shell Icon Handler, men der virker bare ikke.

Registry keys


HKEY_CLASSES_ROOT\.hello\(Default) = "HelloFile"
HKEY_CLASSES_ROOT\HelloFile\(Default) = "Hello"
HKEY_CLASSES_ROOT\HelloFile\DefaultIcon\(Default) = "%1"
HKEY_CLASSES_ROOT\HelloFile\shellex\IconHandler\(Default) = "{8b91aaad-9cb6-3f98-9aef-bbf26067c7f4}"
HKEY_CLASSES_ROOT\CLSID\{8b91aaad-9cb6-3f98-9aef-bbf26067c7f4}\InprocServer32\(Default) = "C:\Users\PERSONALE\Desktop\ClassLibrary1.dll"


Kode:
Imports System.Runtime.InteropServices.ComTypes
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Drawing

<ComVisible(True)> _
Public Class Handler
    Implements IPersistFile, IExtractIcon

    Dim FilePath As String

    Public Function Extract(pszFile As String, nIconIndex As UInteger, ByRef phiconLarge As IntPtr, ByRef phiconSmall As IntPtr, nIconSize As UInteger) As Integer Implements IExtractIcon.Extract
        Dim icoHandle As IntPtr = New Icon("C:\Users\PERSONALE\Desktop\DtmIcon.ico").Handle
        phiconLarge = icoHandle
        phiconSmall = icoHandle
        Return 0
    End Function

    Public Function GetIconLocation(uFlags As UInteger, szIconFile As StringBuilder, cchMax As Integer, ByRef piIndex As Integer, ByRef pwFlags As UInteger) As Integer Implements IExtractIcon.GetIconLocation
        Return 0
    End Function

    Public Sub GetClassID(ByRef pClassID As Guid) Implements IPersistFile.GetClassID
        pClassID = Me.GetType.GUID
    End Sub

    Public Sub GetCurFile(ByRef ppszFileName As String) Implements IPersistFile.GetCurFile
        ppszFileName = Nothing
    End Sub

    Public Function IsDirty() As Integer Implements IPersistFile.IsDirty
        Return 0
    End Function

    Public Sub Load(pszFileName As String, dwMode As Integer) Implements IPersistFile.Load
        FilePath = pszFileName
    End Sub

    Public Sub Save(pszFileName As String, fRemember As Boolean) Implements IPersistFile.Save

    End Sub

    Public Sub SaveCompleted(pszFileName As String) Implements IPersistFile.SaveCompleted

    End Sub

End Class

<ComImport, Guid("000214fa-0000-0000-c000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IExtractIcon

    <PreserveSig> _
    Function GetIconLocation(ByVal uFlags As UInteger, ByVal szIconFile As StringBuilder, ByVal cchMax As Integer, ByRef piIndex As Integer, ByRef pwFlags As UInteger) As Integer

    <PreserveSig> _
    Function Extract(ByVal pszFile As String, ByVal nIconIndex As UInteger, ByRef phiconLarge As IntPtr, ByRef phiconSmall As IntPtr, ByVal nIconSize As UInteger) As Integer

End Interface


Hvad gør jeg forkert?.
Avatar billede MadsHaupt Juniormester
16. oktober 2013 - 16:11 #6
Hvorfor er der ikke nogen der kan give mig et minimalt eksempel på en Shell Icon Handler?.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester