Newsgroup: it.comp.lang.visual-basic
Titolo: [?] come associare un icona ad un FILE ?

Ciao ho sviluppato un programma che crea un tipo di file da me definito.
Come faccio ad associare tramite VB un icona a quetso file ? in modo che gli
utenti ,quando vedano ad esempio il file tramite 'esplora risorse' di
windows 98 , invece della solita icona generica di win vedano un icona da me
creata e identificativa del tipo di file in oggetto ?
grazie a tutti

 wrote in message
86h8qf$fm7$1...@oldforst.unisource.it...

Ti incollo una risposta di Pasquale Minerva di un po' di tempo fa. Se però
per fare l'installazione usi programmi come InstallShield
(
www.installshield.com
) puoi impostare le chiavi del registro direttamente
nel progetto di installazione. Per capire quali chiavi impostare leggiti
attentamente il codice che segue.
__________________________________________________
Bisogna giocare con le API e il registro di configurazione:
-------------------
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
Public Const REG_SZ = 1
Public Const REG_DWORD = 4
Public Const ERROR_MORE_DATA = 234
Public Const ERROR_SUCCESS = 0&
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValueExString Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData
As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Function WriteString(ByVal key As Long, ByVal subKey As String,ByVal
szEntry As String, ByVal Stringa As String) As Integer
   Dim hkeySub As Long
   Dim rc, dwWhat As Long
   rc = RegCreateKey(key, subKey, hkeySub)
   If rc <> ERROR_SUCCESS Then
      MsgBox "Errore"
      WriteString = rc
      Exit Function
   End If
   rc = RegSetValueExString(hkeySub, szEntry, 0, REG_SZ,
Stringa,Len(Stringa))
   RegCloseKey (hkeySub)
   WriteString = rc
End Function
Public Sub AssociaFile(ByVal estensione As String, ByVal descrizioneFile As
String, ByVal pathAppAssociata As String, ByVal pathIcona As String)
   Dim PercorsoChiaveSecondaria As String
   Dim risultato As Long
   PercorsoChiaveSecondaria = estensione
   risultato = WriteString(HKEY_CLASSES_ROOT, PercorsoChiaveSecondaria,
"",descrizioneFile)
   PercorsoChiaveSecondaria = descrizioneFile & "\DefaultIcon"
   risultato = WriteString(HKEY_CLASSES_ROOT, PercorsoChiaveSecondaria,
"",pathIcona)
   PercorsoChiaveSecondaria = descrizioneFile & "\shell\Apri\command"
   risultato = WriteString(HKEY_CLASSES_ROOT, PercorsoChiaveSecondaria,
"",pathAppAssociata & " %1")
   PercorsoChiaveSecondaria = descrizioneFile
   risultato = WriteString(HKEY_CLASSES_ROOT, PercorsoChiaveSecondaria,
"",descrizioneFile)
End Sub
-------------------------------
Stupido esempio di utilizzo:
-----------------------------
AssociaFile ".txt", "Documento di testo", "C:\WINDOWS\NOTEPAD.EXE" ,
"C:\Programmi\computer.ico"
-----------------------------
Ricorda di riavviare il computer