Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
Problema con pickIconDLG
giovedì 18 marzo 2010 - 20.27
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Enzo_LT
Profilo
| Newbie
14
messaggi | Data Invio:
gio 18 mar 2010 - 20:27
Salve, Chiedo aiuto per un problema di icone.
Sto' lavorando su un programma che richiede una specie di desktop personalizzato e ho la necessità di cambiare le icone a dei collegamenti tipo Shortcut, (uso VB2008).
Il problema nasche quando devo estrarre l'icona dal file shell32.dll, allego un pezzo di listato:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim iconfile As String ' file that contains the desired icon
Dim iconindex As Integer ' index of the desired icon
Dim retval As Int32 ' return value
Dim sb As System.Text.StringBuilder
iconfile = Environment.GetFolderPath(Environment.SpecialFolder.System)
iconfile = iconfile & "\shell32.dll"
iconindex = 2
sb = New System.Text.StringBuilder(iconfile, 500)
retval = PickIconDlg(Me.Handle, sb, sb.Length, iconindex)
iconfile = sb.ToString
If retval <> 0 Then
Dim g As Graphics
Dim ico As Icon
Dim hIcon As IntPtr ' handle to the icon once it is extracted
hIcon = ExtractIcon(Process.GetCurrentProcess().Handle, iconfile, iconindex)
ico = Icon.FromHandle(hIcon) <<----- qui errore: l'handle Win32 passato a icon no è valido o di tipo non corretto
g = Me.CreateGraphics
g.DrawIcon(ico, 0, 0)
g.Dispose()
retval = DestroyIcon(hIcon)
End If
End Sub
in effetti il valore di icon = 0 .
Grazie
Saluti Enzo
***************************
Scusate, risolto.
Erano 2 problemi,
1 legato al percorso, la riga " sb = New System.Text.StringBuilder(iconfile, 500)" mi troncava l'ultima lettera "Shell.dll" era "Shell.dl"
2 Con una diversa dichiarazione (anche se non ho il capito motivo)
prima: Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As IntPtr, ByVal lpszExeFileName As String, ByVal nIconIndex As Integer) As Integer
dopo : 'Declare API to extract icon at Class level
<System.Runtime.InteropServices.DllImport("shell32.dll")> Shared Function _
ExtractAssociatedIcon(ByVal hInst As IntPtr, ByVal lpIconPath As String, _
ByRef lpiIcon As Integer) As IntPtr
End Function
cmq risolto Grazie
Saluti Enzo
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !