Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

VB6: onstabiele functie?

Anoniem
Rob V
2 antwoorden
  • Voor mijn 'application launcher' progje haal ik icoontjes uit de executables of shortcuts die getoond moeten worden aan de gebruikers.
    Ik gebruik daarvoor deze functie:

    [code:1:b00d49eee8]Option Explicit

    Private Type TPictDesc
    cbSizeofStruct As Long
    PicType As Long
    hImage As Long
    xExt As Long
    yExt As Long
    End Type

    Private Type TGUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
    End Type

    Private Declare Function ExtractAssociatedIcon Lib _
    "shell32.dll" Alias "ExtractAssociatedIconA" _
    (ByVal hInst As Long, ByVal lpIconPath As String, _
    lpiIcon As Long) As Long

    Private Declare Function OleCreatePictureIndirect Lib _
    "olepro32.dll" (ByRef lpPictDesc As TPictDesc, _
    ByRef RIID As TGUID, ByVal fPictureOwnsHandle As Long, _
    ByRef IPic As IPicture) As Long

    'Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long



    Public Function HaalIcon(ByVal sFile As String, Optional ByVal Index As Long = 0) As Picture
    Dim Pic As Picture
    Dim PicDes As TPictDesc
    Dim IID_IDispatch As TGUID
    Dim Handle As Long

    Handle = ExtractAssociatedIcon(App.hInstance, sFile, Index)

    If Handle = 0 Then Exit Function

    PicDes.cbSizeofStruct = Len(PicDes)
    PicDes.PicType = vbPicTypeIcon
    PicDes.hImage = Handle
    IID_IDispatch.Data1 = &H20400
    IID_IDispatch.Data4(0) = &HC0
    IID_IDispatch.Data4(7) = &H46
    Call OleCreatePictureIndirect(PicDes, IID_IDispatch, True, Pic)

    Set HaalIcon = Pic

    End Function


    'voorbeeld …
    'Set Image1.Picture = HaalIcon("C:\Shortcut.lnk")

    [/code:1:b00d49eee8]

    Wanneer ik deze functie niet gebruik in mijn prog, lijkt het stabieler dan wanneer ik hem wel gebruik.
    Ik krijg dan af en toe zo'n 'VB6 heeft fouten gegenereerd…' verhaal.
    ERRUG VERVELEND.

    Ziet iemand hier iets 'onstabiels' in?


    ROB
  • Het is al weer even geleden dat ik in vb heb gewerkt, maar probeer eens om:

    [code:1:752715a215]Public Function HaalIcon(ByVal sFile As String, Optional ByVal Index As Long = 0) As Picture
    Dim Pic As Picture [/code:1:752715a215]

    Te veranderen in:

    [code:1:752715a215]Public Function HaalIcon(ByVal sFile As String, Optional ByVal Index As Long = 0) As IPicture
    Dim Pic As IPicture [/code:1:752715a215]

    Je werkt met COM dus ook de juiste return variabelen zijn daar voor nodig en als het goed is kent VB ook IPicture.

    Ik weet niet of het werkt maar give it a try

    :wink:

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.