Installierte Fonts ermitteln [erledigt]

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Weazle25

Betreff: Installierte Fonts ermitteln [erledigt]

BeitragMo, Nov 21, 2005 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit BB kann man ja biliebige Fonts laden und verwenden.
Nur wie kann ich herrausfinden welche Fonts installiert sind ohne den Fonts-Ordner abklappern zu müssen?

Allerdings brauche ich die Windowsnamen der Fonts und nicht die Dateinamen.


Gruss
Weazle
  • Zuletzt bearbeitet von Weazle25 am Mi, Nov 23, 2005 20:34, insgesamt einmal bearbeitet

BtbN

BeitragMo, Nov 21, 2005 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Lad ihn, und guck obs geklappt hat?

x-pressive

BeitragDi, Nov 22, 2005 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt da eine nette kleine "enumfonts.dll" von Seth Jeffery (alias "Cyberseth"), die eine Liste aller installierten Fonts ausgibt. Hab jetzt keine URL im Kopf aber googeln nach "enumfonts.dll" wird dir den Weg zeigen, oh Suchender Wink
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Weazle25

BeitragMi, Nov 23, 2005 1:44
Antworten mit Zitat
Benutzer-Profile anzeigen
x-pressive hat Folgendes geschrieben:
Es gibt da eine nette kleine "enumfonts.dll" von Seth Jeffery (alias "Cyberseth"), die eine Liste aller installierten Fonts ausgibt. Hab jetzt keine URL im Kopf aber googeln nach "enumfonts.dll" wird dir den Weg zeigen, oh Suchender Wink


Hab ich mir runtergeladen. Danke.
Leider habe ich von C++ keine Ahnung.
Deshalb schaffe ich es nicht mal die dcls zusammen zu basteln.
Aber trotzdem Danke für Deine Hilfe.


Gruss
Weazle

x-pressive

BeitragMi, Nov 23, 2005 2:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Um die .dll zu nutzen, brauchst du keine Ahnung von C++ zu haben. Das ist recht simpel:

1. Erstelle eine Textdatei mit folgendem Inhalt und speichere sie als "enumfonts.decls" in deinem Blitz/userlibs-Ordner:
Zitat:
.lib "enumfonts.dll"

EnumerateFonts%(hdc)
GetEnumeratedItem$(plist%, index%)
GetEnumeratedCount%(plist%)


2. Erstelle eine weitere Textdatei mit folgendem Inhalt und speichere sie als als "user32.decls" in deinem Blitz/userlibs-Ordner:
Zitat:
.lib "user32.dll"
User32_GetDC%( hWnd% ):"GetDC"
User32_ReleaseDC (hWnd%,hDC%):"ReleaseDC"


3. Schmeiss die .dll in den selben Ordner wie dein Programm.

4. Das wars. Jetzt kannst du die Befehle in deinem Code nutzen. Dieser BlitzPlus-Code, zum Beispiel, füllt eine Listbox mit den Namen aller gefundenen Fonts:

BlitzBasic: [AUSKLAPPEN]

; --------------------------------------------------
; FUNCTION: FILL LIST BOX WITH FONTS
; --------------------------------------------------
Function FindFonts()

; FIND INSTALLED FONTS AND FILL FONT LIST
hwnd = QueryObject(Win,1)
dc = User32_GetDC(hwnd)
p = enumeratefonts(dc)

For i = 0 To getenumeratedcount(p)-1
txt$ = getenumerateditem(p,i)
; SORT FONTS
For ii = 0 To CountGadgetItems( FontBox )-1
If Lower(txt) < Lower(GadgetItemText( FontBox ,ii)) And txt <> \"\"
InsertGadgetItem FontBox,ii,txt,6
txt = \"\"
End If
Next
If txt <> \"\" Then AddGadgetItem FontBox,txt,0,6
Next

User32_ReleaseDC(hwnd,dc)

; SELECT CURRENT FONT
For ii = 0 To CountGadgetItems( FontBox )-1
If GadgetItemText( FontBox ,ii) = FontName$ Then SelectGadgetItem FontBox,ii
Next

End Function
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Weazle25

BeitragMi, Nov 23, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
x-pressive hat Folgendes geschrieben:
Um die .dll zu nutzen, brauchst du keine Ahnung von C++ zu haben. Das ist recht simpel:

1. Erstelle eine Textdatei mit folgendem Inhalt und speichere sie als "enumfonts.decls" in deinem Blitz/userlibs-Ordner:
Zitat:
.lib "enumfonts.dll"

EnumerateFonts%(hdc)
GetEnumeratedItem$(plist%, index%)
GetEnumeratedCount%(plist%)




Funktioniert leider immer noch nicht.
B3D sagt mir nur das die Functionen nicht in der EnumFonts.dll enthalten sind.
Auch im Sourcecode der EnumFonts.dll konnte ich keinen Hinweis auf diese Functionen entdecken.
Hast Du die dll vielleicht verändert oder ne andere Version?


Gruss
Weazle

[Edit]Ich habe die dll von http://www.aspheute.com/artikel/20010126.htm

x-pressive

BeitragMi, Nov 23, 2005 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Source-Code der .dll?? Nur um Missverständnissen vorzubeugen -eine .dll-Datei ist KEINE Textdatei, sondern eine bereits kompilierte Binärdatei. Du hast also sicher nicht deren Source-Code gesehen, sondern irgendetwas anderes dafür gehalten.

Hast du ganz sicher eine .dll heruntergeladen oder verwechselst du .dll-Dateien vielleicht mit irgendwelchen anderen Dateitypen, vielleicht den .decls-Dateien?

Die decls-Dateien sind einfache Textfiles, die Blitz nur mitteilen, welche Funktionen in den .dll's zu finden sind. Die eigentlichen Funktionen sitzen in der .dll -und das ist eine Binärdatei (wenn du sie in einen Texteditor schmeisst, gibt's entweder Zeichensalat oder lauter Hex-Zahlen).
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
  • Zuletzt bearbeitet von x-pressive am Mi, Nov 23, 2005 17:41, insgesamt einmal bearbeitet

BtbN

BeitragMi, Nov 23, 2005 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann, wenn man die DLL mit nem Texteditor öffnet, die Funktionsnamen noch erkennen!
Die sind im klartext.
Und es gibt diverse DLL-Editoren, die die Funktionen anzeigen.

x-pressive

BeitragMi, Nov 23, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so meint er das -na jedenfalls muß auf der Seite, wo du die .dll heruntergladen hast, ja auch eine Anweisung stehen, wie die decl aussehen muß. Könnte sein, daß es inzwischen eine neue Version der .dll gibt, die wieder andere Funktionen hat.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Weazle25

BeitragMi, Nov 23, 2005 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr habt beide nicht ganz unrecht.
Aber das ZIP-File enthielt die dll und dessen Sourcecode.
Und weder im Sourcecode noch in der disassemblierten dll waren die oben genannten Functionsnamen zu finden.

Zum disassemblieren habe ich übrigens "URSoft W32Dasm Version 8.93 Program Disassembler/Debugger" verwendet.
Da bekommt man eine recht ausführliche Liste aller im- und exportierten Functionen.
Den Link habe ich leider nicht mehr.
Einfach mal nach "W32DASM89.zip" googeln.


Ursprünglich hatte ich mit API-Befehlen versucht die installierten Fonts auszulesen bis ich mitbekommen habe das man die in Delphi auf ganz einfache Weise ohne API auslesen kann.
Hab mir ne entsprechende dll gebastelt und es funktioniert.

Aber trotzdem Danke für Eure Hilfe.


Gruss
Weazle

x-pressive

BeitragMi, Nov 23, 2005 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Heidenei Shocked Warum müssen die Deutschen immer alles so umständlich und kompliziert machen? Rolling Eyes Email an den Author hätte doch auch genügt -oder ich hätte dir mal eben alles komplett als .zip geschickt.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group