[ Blue82 @ 03.09.2008. 19:10 ] @
Kako mogu u VB6 da preuzmem ikonicu iz nekog programa i da je stavi u npr PictureBox? Da bi bilo jasnije npr treba da otvori prozor za Open (ono preko Common dialog) i kada ga otvori da u neki picturebox ubaci ikonicu tog programa koji sam izabrao.
[ Aleksandar Ružičić @ 04.09.2008. 10:23 ] @
proguglaj za "vb6 extract icon from exe", evo prvog rezultata: http://www.thescarms.com/vbasic/extracticons.aspx

...
[ stefanpn @ 04.09.2008. 11:26 ] @
Dodaj na formu PictureBox i Command Button, i prilepi sledeci kod:

Code:

Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

Private Sub Command1_Click()
    
    Dim return1 As Long

    Picture1.AutoRedraw = True

    return1& = ExtractIcon(Me.hWnd, "c:\windows\explorer.exe", 0) ' 0 (poslednji argument) ti je icon index, tako da mozes extraktovati sve ikone koje se nalaze u datoteci

    DrawIcon Picture1.hdc, 0, 0, return1&
    
    Picture1.Refresh
    
End Sub


Srecno.
[ Blue82 @ 04.09.2008. 12:08 ] @
hvala za trud, sad cu probati.
[ Blue82 @ 04.09.2008. 14:49 ] @
Ej radi, super je!
[ Eurora3D Team @ 04.09.2008. 18:57 ] @
Stefan ti je odgovorio na pitanje ...
Ja sam napravio varijaciju na ovaj kod. Program pokazuje sve mogucnosti ove dve Win API funkcije tako sto na Formu iscrtava sve ikonice iz Explorera (ili nekog drugog programa).
Nije potrebno nista od kontrola na formi.
poz
Code:

Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

Private Sub Form_Load()
Dim hIcon As Long, iNo As Long, no As Long
iNo = ExtractIcon(App.hInstance, "c:\windows\explorer.exe", -1) '-1 vraca broj ikonica u fajlu
If Not iNo = 0 Then
Me.AutoRedraw = True: Me.Move 50 * Screen.TwipsPerPixelX, 50 * Screen.TwipsPerPixelY, iNo * 40 * Screen.TwipsPerPixelX, 75 * Screen.TwipsPerPixelY '
For no = 0 To iNo - 1
hIcon = ExtractIcon(App.hInstance, "c:\windows\explorer.exe", no) ' extractuje ikonicu sa indexom no
DrawIcon Me.hdc, 40 * no, 10, hIcon ' iscrtava jednu do druge
Next no
Me.Refresh
End If
End Sub