Newsgroup: it.comp.lang.visual-basic
Titolo: Praticamente Una al minuto...(Fonts)

Presupponiamo che io usi nel mio pc in ambiente di progettazione un tipo di
font che l'utente finale
non abbia...Io direi lo inserisco nel pacchetto di installazione...
No! Nel senso che se cerco di aggiungere un file dalla cartella fonts il kit
di installazione
non lo prende...
E mo? All'utente non verrà installato a meno che non lo faccia manualmente.
Che si fa in questi casi?
Gracias

 ha scritto

Probabilmente esiste qualche API per registrare i fonts, ma se consideriamo
che la loro origine è un pacchetto di installazione e magari questo non ha
tale possibilità...
Personalmente ho tagliato la testa al toro e non mi sono proprio posto il
problema. Distribuisco i fonts che la mia procedura usa (anche quelli che
forse sono già disponibili nel sistema ricevente) in una cartella del CD o
su un floppy e nelle note di installazione raccomando caldamente (e spiego)
la procedura di installazione.
Se l'utente non la fa, cavolacci suoi: Si cuccherà i fonts "riprodotti" da
Windows per quelli che non trova.
Ovvio che se per te il font è determinante e non deve essere riprodotto "per
somiglianza", devi "pretendere" che l'installazione venga fatta e, in tali
condizioni, potresti anche fare un programma aggiuntivo di utilità (da
aggiungere al Setup in modo che venga installato) che provvede una-tantum a
registrare i fonts. IMHO, separatamente dalla procedura di Setup.
Prova a vedere 
www.allapi.net


usi innosetup :))
ciao

io ho messo il font nel file di risorse; quando parte il programma lo
installa (trovi in giro api per farlo), quando il programma si chiude lo
disinstalla; per comodità (mi ha dato problemi su un notebook con
millennium) ho messo nella configurazione un'opzione per dirgli "non
caricarlo", così se lo fornisco al cliente lo installa una-tantum in windows
e uso quello installato

 disinstalla
Lo hai provato su NT, 2000 o XP?
Alberto

no...ma non dirmi che non funziona...
provato per ora con win9x (nessun problema) e millennium (non carica il
font, ma non so se č dovuto al millennium, al portatile un po' vecchiotto e
800*600 o che altro...)

 no...ma non dirmi che non funziona...
Non ti dico niente, perchè non l'ho mai provato.
Tuttavia, l'installazione dei font è una operazione protetta, in ambiente
NT, per cui non credo che possa funzionare con utenti User o Guest.
L'installazione degli applicativi deve essere fatta da un Administrator, per
cui in tale fase sarebbe anche possibile installare il font, ma se cerchi di
farlo durante l'esecuzione del software, come utente User, credo che il
sistema operativo dovrebbe impedirtelo.
Ciao
Alberto

non ho qua il sorgente, ma c'è una api (sito comune?) che registra il font
SOLO per il programma (non ho mai trovato API per registrare font in modo
"perenne")
Quindi (esistendo questa API) la limitazione è strana

 ha scritto nel messaggio
news:akibeo$1icvgt$1...@ID-147253.news.dfncis.de...

Prova a dirmi come si chiama la Api, e vediamo se trovo qualche
documentazione.
Per quanto riguarda la 'stranezza', in realtà non c'è niente di strano. I
sistemi NT e non-NT sono diversi, non sarebbe la prima volta che una cosa
gira su 98 e non su NT.
Ciao
Alberto

vedo stasera a casa e rispondo

Io uso, per registrare font (come dicevo: solo per il programma):
Declare Function RemoveFontResource& Lib "gdi32" Alias "RemoveFontResourceA"
(ByVal lpFileName As String)
Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal
lpFileName As String) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_FONTCHANGE = &H1D
Public Const HWND_BROADCAST = &HFFFF&
 Dim dummy As Long
 dummy = AddFontResource(root + "\" + font_bilanci + "\bilanci.ttf")
 dummy = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
 e per deregistrare all'uscita:
 dummy = RemoveFontResource(root + "\" + font_bilanci + "\bilanci.ttf")
 dummy = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)

 lpFileName As String) As Long
Secondo la documentazione, la cosa funziona anche su NT.
Occorre solo verificare che funzioni anche quando si è loggato come semplice
User o Guest.
Basta che tu prenda il tuo exe e lo provi su un NT o un 2000, loggato come
utente semplice.
Ciao
Alberto