Vraag & Antwoord

Programmeren

VB6: onstabiele functie?

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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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