Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB - VB.NET] Conversione alcune funzioni

    Salve a tutti,
    Ho sottomano questo codice VB per installare font TTF:
    codice:
    Dim Ret%, Res&
    Const WM_FONTCHANGE = &H1D
    Const HWND_BROADCAST = &HFFFF
    Const FontPath$ = "Arial.TTF"
    Const FontRes$ = "Arial.FOT"
    Const FontName$ = "Arial"
    Const WinPath$ = "c:\windows"
    Ret% = CreateScalableFontResource(0, FontRes$, FontPath$, WinPath$)
    Ret% = AddFontResource(FontRes$)
    Res& = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
    Ret% = WriteProfileString("fonts", FontName$ + " Arial (TrueType)", FontRes$)
    Mi potreste aiutare a capire come convertirlo in VB.NET?

    EDIT: ho risolto, ma non riesco a cancellare la discussione!
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  2. #2
    piuttosto che chiuderla sarebbe meglio se postassi la soluzione in modo che chi avrà il tuo stesso problema saprà come risolverlo...
    I database... la mia passione + o -

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,474

    Moderazione

    Originariamente inviato da power.mobile
    piuttosto che chiuderla sarebbe meglio se postassi la soluzione in modo che chi avrà il tuo stesso problema saprà come risolverlo...
    Quoto e sottoscrivo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Ok giusto
    Questo codice serve a installare un font sul PC
    E' sintetizzabile tutto in questa API:
    codice:
    <System.Runtime.InteropServices.DllImport("gdi32.dll")> _
    Public Shared Function AddFontResource(ByVal lpszFilename As String) As Integer
    End Function
    La quale accetta come unico parametro il percorso del font da installare
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  5. #5
    Bisogna specificare che non li installa proprio... con Word ad esempio li vedi, ma se cerchi di utilizzarli su VB.NET non funge

    EDIT:
    Rettifico: sembra che carichi il Font come risorsa, non capisco bene!

    EDIT2:
    Ecco il codice giusto:
    codice:
    <DllImport("gdi32")> _
        Function AddFontResource(ByVal lpFileName As String) As Integer
        End Function
    
        <DllImport("user32.dll")> _
        Function SendMessage(ByVal hWnd As Integer, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        End Function
    
        <DllImport("kernel32.dll", SetLastError:=True)> _
        Function WriteProfileString(ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Integer
        End Function
    
        Sub Main()
            IO.File.Copy(My.Application.Info.DirectoryPath & "\nomefont.TTF", "C:\WINDOWS\Fonts\nomefont.TTF", True)
            Dim Ret As Integer
            Dim Res As Integer
            Dim FontPath As String
            Const WM_FONTCHANGE As Integer = &H1D
            Const HWND_BROADCAST As Integer = &HFFFF
            FontPath = "C:\WINDOWS\Fonts\nomefont.TTF"
            Ret = AddFontResource(FontPath)
            Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
            Ret = WriteProfileString("fonts", "nomefont.TTF (TrueType)", My.Application.Info.DirectoryPath & "\nomefont.TTF")
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  6. #6
    Questo codice fallirà clamorosamente su qualunque macchina in cui la cartella dei font non è in c:\Windows\Fonts, ad esempio qualunque macchina su cui Windows sta su un'unità diversa da c: (tipico il caso del setup di Windows che installa su d: facendo casino con la partizione di recovery, o di più versioni di Windows installate) o in cui la cartella di Windows ha un nome diverso (fino a Windows 2000 gli OS di famiglia NT stavano di default in una cartella chiamata WINNT, e se si installa Windows su un drive con già una cartella Windows viene creata una cartella Windows(01)).

    Perché non imparate ad usare le cacchio di special folders?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Si lo so che dovrei usare quelle, ma qual'è? System?
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  8. #8
    Environment.GetFolderPath(Environment.SpecialFolde r.Fonts) ti restituisce il percorso della directory dei font.
    Tra l'altro, per concatenare i percorsi usa Path.Combine, in modo da non fare casini con eventuali backslash mancanti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Non esiste Environment.SpecialFolder.Fonts , uso la versione 2.0 del framework
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  10. #10
    Purtroppo il valore per Fonts è stato aggiunto solo in seguito; in tal caso, per ottenere la cartella fonts devi usare la API SHGetFolderPath usando come valore CSIDL la costante CSIDL_FONTS.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.