Newsgroup: it.comp.lang.visual-basic
Titolo: Cambiare l'icona di un collegamento

Una domanda semplice [almeno spero che lo sia per voi, ma sicuramente non lo
è per me :-( ]...
Come posso cambiare da VB4 l'icona di un collegamento in quella di un
programma o di un file .ico a mia scelta? O, in alternativa, come posso
creare un nuovo collegamento che punti ad un programma, ma abbia l'icona di
un altro programma o di un file .ico?
Grazie a tutti e scusate per la frequenza delle mie domande.

...

Dovrebbe bastare modificare il path dell'icona nel registry.
Lancia REGEDIT.EXE, guarda (ad esempio) la voce HKEY_CLASSES_ROOT\txtfile
sotto \DefaultIcon trovi (nel mio caso):
"C:\WINDOWS\SYSTEM\shell32.dll,-152"
basta che modifichi la stringa in quello che ti serve, esempio:
"C:\MIOPROG\MIOPROG.ICO,1"
oppure
"C:\MIOPROG\MIOPROG.EXE,9"
(il numero e' l'identificativo dell'icona, nel caso ce ne siano piu' di una,
in DLL o EXE)
Per leggere/scrivere sul Registry, trovi del materiale sul Sito Comune:
http://members.xoom.com/it_lang_vb
--
Roal Zanazzi
z...@iol.it

Carissimo Roal Zanazzi, ti ringrazio per la grande pazienza e interesse con
cui mi segui. Nel caso di quest'ultimo post, credo però di aver posto male
la domanda. Io volevo sapere se esiste un sistema per cambiare l'icona di un
singolo collegamento (come si fa scegliendo "Proprietà" dopo un click destro
sul link e cliccando poi su "Cambia icona") e non per cambiare l'icona che
per default avranno tutti i collegamenti ad un certo programma.
Scusandomi per l'incomprensione, ti saluto e attendo tue (o altrui...)
notizie.

...

Scusa tu, ho riletto il tuo msg ed effettivamente ho mal compreso la
domanda.
Dunque... i link...
Mai gestiti, mi pare che ci sia un'interfaccia COM per gestirli, ma potrei
dire ca**ate.
Questo e' quanto dice l'help dell'SDK (API WIN32) sui link files:
"
When the user creates a shortcut to an object by choosing the Create
Shortcut command from the object's context menu, Windows stores the
information it needs to access the object in a link file ¾ that is, a binary
file that has the .LNK filename extension. A link file contains the
following information:
· The location (path) of the object referenced by the shortcut (called the
"corresponding object").
· The working directory of the corresponding object.
· The list of arguments that the system passes to the corresponding object
when the IContextMenu::InvokeCommand member function is activated for the
shortcut.
· The show (SW_) command used to set the initial show state of the
corresponding object.
· The location (path and index) of the shortcut's icon.
· The shortcut's description string.
· The hot key for the shortcut.
When a link file is deleted, the corresponding object is not affected.
If you create a shortcut to another shortcut, the system simply copies the
link file rather than creating a new link file. This is important to
remember if you are assuming that the shortcuts will remain independent of
each other.
"
Quindi si tratta di file binari... sinceramente non mi azzarderei ad aprirli
come tali e modificarli :-P
Mi arrendo alla mia ignoranza, anzi no, la prendo come sfida :-)
sempre nell'help API, si dice:
IShellLink: Designates an interface that allows an application to create and
resolve shell links. (interface nel senso di interfaccia COM)
Questa interfaccia ha (tra agli altri) i due metodi che servirebbero:
GetIconLocation e SetIconLocation
Il problema e' che non ti so dire come utilizzare un'interfaccia COM da VB
(prima o poi dovro' leggermi quei dannati manuali di VB5! :-)
Qualcuno lo sa?
--
Roal Zanazzi
z...@iol.it