Wie kann ich (unter .NET) am besten die Namen ALLER auf dem Rechner
installierten Schriftarten ermitteln?
Mit "(New System.Drawing.Text.InstalledFontCollection).Families"
erhalte ich anscheinend nur einen Teil der Schriftarten, bestimmte
Schriftarten-Formate werden dabei jedoch anscheinend ignoriert.
Kann man die noch irgendwie anders auslesen?
Stehen die irgendwo in der Registry oder so?
--
Mit freundlichen Grüßen
Daniel Barisch
> Mit "(New System.Drawing.Text.InstalledFontCollection).Families"
> erhalte ich anscheinend nur einen Teil der Schriftarten, bestimmte
> Schriftarten-Formate werden dabei jedoch anscheinend ignoriert.
Welche? Beachte auch die FontFamily.IsStyleAvailable-Methode.
--
<http://schneegans.de/sv/> · Schema-Validator für XML
> Welche?
z.B.
Courier ("Schriftartendatei", *.fon)
Global Monospace ("Composite Font File", *.CompositeFont)
eine Schriftart für's CorporateDesign ("Type 1-Schriftartendatei",
*.pfm)
> Beachte auch die FontFamily.IsStyleAvailable-Methode.
Die nutzt mir ja nix, da die entsprechenden Schriftarten in der
.Families-Auflistung gar nicht enthalten sind.
standardmäßig werden alle Fonts auf einem System in dem
Ordner "\Windows\Fonts\" installiert. Du kanst doch alle
Dateien darin ermitteln mit z.B. Directory.GetFiles("C:\Windows\Fonts")
und dann aus jeder dieser Dateien den Names des Fonts ermitteln.
Das wäre die umfangreichste und kompletteste Font-Auflistuung, die
Du bekommen könntest und würdest. Du musst halt noch den Font
Namen aus der Datei ermitteln, was wiederum (meines Wissens nach)
nicht ohne relativ umfagreichem PInvoke geht,...aber vielleicht weis
jemand einen einfacheren Weg,...
Grüße
Kerem
--
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/software/deviceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
<Daniel Barisch> schrieb im Newsbeitrag
news:#P3APEEj...@TK2MSFTNGP06.phx.gbl...
BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten. Daher
ist es relativ sinnfrei überhaupt zu versuchen letztere Schriftarten zu
listen, da man sie eh nicht zum "Zeichnen" benutzen kann.
--
Gruß Scotty
Ja, eben ... da müsste ich mich diesbezüglich erstmal schlau machen.
> BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten.
> Daher ist es relativ sinnfrei überhaupt zu versuchen letztere
> Schriftarten zu listen, da man sie eh nicht zum "Zeichnen" benutzen
> kann.
Wer hat denn gesagt, dass ich damit "Zeichnen" will? Ich brauch
lediglich die Namen, um die innerhalb einer HTML-Seite an ein
ExecCommand('FontName', ...) zu übergeben. In diese HTML-Seite werden
vor der Anzeige in einem .NET-WebBrowser-Steuerelement an die
entsprechende Stelle (HTML-Select) die verfügbaren Schriftarten
"eingeparst".
Gibt es ev. eine Möglichkeit per JavaScript da ran zu kommen?
Oder sonst noch Ideen/Ansätze?
meine Antwort bezog sich ja auch nur auf diese Frage,
die anscheinend für Ihn entscheident ist,...
"Wie kann ich (unter .NET) am besten die Namen ALLER auf dem Rechner
installierten Schriftarten ermitteln?"
> BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten. Daher
> ist es relativ sinnfrei überhaupt zu versuchen letztere Schriftarten zu
> listen, da man sie eh nicht zum "Zeichnen" benutzen kann.
Ja, das mag stimmen, aber er es gibt ja noch andere Wege, wie man Text
auf ein Control bringen kann, wie z.B. das Windows GDI API, z.B. das
TextOut,
was auch, am Rande bemerkt, sehr schnell ist. Aber das ist alles dem
Kollegen
überlassen und ich glaube, er hat jetzt genug Informationen erhalten. Die
Kernfrage wäre damit ohnehin beantwortet, d.H wie er an alle installierten
Fonts kommt...
So kann er an die Namen der Fonts in den Dateien kommen, bzw, an
noch mehr informationen die er braucht (da hat sich jemand schon
die Mühe gemacht und es gibt auch ein .NET C# Beispiel!):
http://www.codeproject.com/KB/GDI/fontnamefromfile.aspx
Hier das Beispiel:
http://www.codeproject.com/KB/GDI/fontnamefromfile.aspx?fid=3897&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=934171#xx934171xx
Es gibt aber auch einen Schlüssel in der Registry, der vielleicht
hilft:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
Der Schlüssel existiert unter XP,Vusta und Sieben, keine Ahnung, ob es den
unter
2000 und kleiner gibt,...
> Wer hat denn gesagt, dass ich damit "Zeichnen" will?
naja, bei so einer Frage gehen wir hier immer vom Zeichnen aus,
zumindest meistens, aber gut, dann solltest Du Dir mein letztes
Posting ansehen, das dürfte Dir dann vollkommen ausreichen,
da ich da noch einiges hineingeschrieben habe, das deinen
Fall ausreichend abdecken sollte,...
Daniel Barisch schrieb:
> Wer hat denn gesagt, dass ich damit "Zeichnen" will? Ich brauch lediglich die Namen, um die innerhalb einer HTML-Seite an ein
> ExecCommand('FontName', ...) zu übergeben. In diese HTML-Seite werden vor der Anzeige in einem .NET-WebBrowser-Steuerelement an
> die entsprechende Stelle (HTML-Select) die verfügbaren Schriftarten "eingeparst".
Dann solltest Du aber beachten, dass die am Client verfügbaren Schriften
nicht zwingend auf anderen Clients, die sich die HTML Seite dann später
mal anschauen, vorhanden sind. Wenn das nicht ein beschränkter Benutzer-
kreis ist, dem man die Schriftarten dann auch installieren kann, solltest
Du gar nicht erst mit sowas hantieren, sondern dich auf die Standard-
schriftarten beschränken.
--
Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
> Es gibt aber auch einen Schlüssel in der Registry, der vielleicht
> hilft:
>
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
> NT\CurrentVersion\Fonts
Der Schlüssel enthält zumindest solche wie Courier
("Schriftartendatei", *.fon) und Global Monospace ("Composite Font
File", *.CompositeFont). Allerdings leider nicht "unsere" Schriftart
für's CorporateDesign ("Type 1-Schriftartendatei", *.pfm), wobei das
wirklich ein ziemlich absonderliches Format zu sein scheint.
Da werd ich mir mal das von dir gepostete Beispiel zu Gemüte führen.
Ich hoffe nur, dass das dann auch für die "Type 1-Schriftartendatei"
funktioniert ...
Vielen Dank für die Hilfe!
> Dann solltest Du aber beachten, dass die am Client verfügbaren
> Schriften
> nicht zwingend auf anderen Clients, die sich die HTML Seite dann
> später
> mal anschauen, vorhanden sind.
Dessen bin ich mir durchaus bewusst. Allerdings ist der IE, der dem
WebBrowser-Steuerelement ja zu Grunde liegt, wenigstens so nett ggf.
eine andere Schriftart zu verwenden, anstatt gar nix anzuzeigen.
> Wenn das nicht ein beschränkter Benutzer-
> kreis ist, dem man die Schriftarten dann auch installieren kann,
> solltest
> Du gar nicht erst mit sowas hantieren, sondern dich auf die
> Standard-
> schriftarten beschränken.
Und was sind dann "Standard-Schriftarten"? Für meine Begriffe kann man
doch ggf. jede Schriftart deinstallieren, oder? Und wenn sich der
Kunde für teuer Geld ne "eigene" Schriftart kauft, dann will er die
schließlich auch benutzen können. Ggf. wird's dann eben als PDF
gedruckt, damit es auch wirklich jeder lesen kann.
Nö, tun sie nicht. Die Beispiele sind soweit ich das überblicke auch
auf TTFs spezialisiert.
Naja, dann muss ich halt ne Möglichkeit einbauen, da noch "manuell"
Einträge in die Schriftarten-Liste aufzunehmen zu können.
> Allerdings ist der IE, der dem WebBrowser-Steuerelement ja zu
> Grunde liegt, wenigstens so nett ggf. eine andere Schriftart zu
> verwenden, anstatt gar nix anzuzeigen.
Das schaffen andere Browser übrigens auch.
<Daniel Barisch> schrieb:
> Dessen bin ich mir durchaus bewusst. Allerdings ist der IE, der dem WebBrowser-Steuerelement ja zu Grunde liegt, wenigstens so
> nett ggf. eine andere Schriftart zu verwenden, anstatt gar nix anzuzeigen.
Klar. Andere Browser auch, wie Christoph ja schon sagte. Aber das
Erscheinungsbild wirkt mit einer anderen Schriftart, die sich ggfs.
ja komplett unterscheidet (den Browser interessiert das im Allgemeinen
nicht sonderlich und er kennt die andere Schrift ja auch nicht, so
dass er natürlich keine Schrift "aussuchen" kann, die der eigentlich
verwendeten am ehesten entsprechen würde.
> Und was sind dann "Standard-Schriftarten"?
Na die, die auf so gut wie jedem System verfügbar sind. Welche das
sind, da scheiden sich die Geister ein wenig.
> Für meine Begriffe kann man doch ggf. jede Schriftart deinstallieren, oder?
Klar. Aber meist wird man die vom System mitgelieferten Schriftarten
eher nicht löschen.
> Und wenn sich der Kunde für teuer Geld ne "eigene" Schriftart kauft, dann will er die schließlich auch benutzen können.
Aber nur bei sich auf seinem Rechner.
> Ggf. wird's dann eben als PDF gedruckt, damit es auch wirklich jeder lesen kann.
OK, das ist ne Möglichkeit. Die PDFs werden aber sicher nicht kleiner,
wenn man das mit vielen verschiedenen Schriftarten macht.
Trugschluss, nicht jedes PDF-Dokument beinhaltet auch die verwendete(n)
Schriftart(en). Daraus kann dann auch ein Dokument entstehen, das nur aus
Hieroglyphen besteht oder sogar, gar nicht geöffnet werden. Im Normalfall
verhält sich die Darstellung aber so wie die Anzeige eines Browser, es wird
einfach eine "Standardschriftart" verwendet.
Das einzig Sichere ist an dieser Stelle eine Grafik(PNG, TIFF, JPEG etc) zu
erstellen.
--
Gruß Scotty
Wenn man die PDF-Datei selbst erstellt, kann man auch die erforderlichen
Schriften einbetten (Schriftlizenzen beachten).
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
ich habe mich mal damit beschäftigt, wie man zu der Liste mit
den Schriftarten unter JavaScript kommen kann. Da ich mich in
der Vergangenheit serh intensiv mit HTML,DHTML,CSS und
Browser-Scripting/Erweiterung, AddOn-Entwicklung, etc.
beschäftigt habe, ist mir da was noch eingefallen. Zwar ist
das hier eine VB-Only Gruppe (es seie mir bitte verziehen!),
aber vielleicht wird das Dir und ggf. einem Anderen auch helfen.
Ich habe hier ein HTML/DHTML/JavaScript/ActiveX Beispiel
geschrieben, was Dir vielleicht helfen kann. Es läuft aber auf
IE , bzw auf Bowsern, die ActiveX erlauben und auf MS Systemen
laufen. Hier der volle Code (in eine HTMLDatei einfügen!) :
<html>
<head>
<title>Get available Fonts</title>
<script language="javascript" type="text/javascript">
function GetInstalledFonts()
{
// Get available Fonts
if (document.getElementById) {
dhoObject = document.getElementById('dialogHelperObject');
if (dhoObject && dhoObject.fonts) {
var FontsArray = [];
//get fonts
for (index = 0; index < dhoObject.fonts.count; index++) {
FontsArray[index] = dhoObject.fonts(index + 1);
}
//sort fonts
FontsArray.sort();
//insert fonts into select object
for (i = 0; i < FontsArray.length; i++)
{
var FontName = FontsArray[i];
var objOptNew = document.createElement('option');
objOptNew.text = FontName.toString();
objOptNew.value = FontName.toString();
try {
elSel.add(objOptNew, null); //non IE
}
catch (e) {
fontsList.add(objOptNew, 0); // IE
}
}
}
}
}
function fontsList_OnChange()
{
alert(window.fontsList.value);
}
</script>
<style type="text/css">
#fontsList {
height: 11px;
width: 468px;
}
</style>
</head>
<body onload="GetInstalledFonts();">
<object id="dialogHelperObject"
classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width=0
height=0></object>
<select id="fontsList" name="fontsList"
onchange="fontsList_OnChange();">
</select>
</body>
</html>
Du hattest ja nach einr evtl. JavaScript Lösung in einer deiner
Rückantworten gefragt,...
Verwendet wird das sog. "Dialog Helper Object":
[Dialog Helper Object]
http://msdn.microsoft.com/en-us/library/ms535238(VS.85).aspx
Und halt etwas DHTML/JavaScript zum dynamischen
Erzeigen/Einfügen von HTML-Elementen,...
> Du hattest ja nach einr evtl. JavaScript Lösung in einer deiner
> Rückantworten gefragt,...
>
> Verwendet wird das sog. "Dialog Helper Object":
Danke für den Tip!
Wenn ich das in eine "normale" HTML-Seite einbaue, dann funktionierts
und liefert mir anscheinend auch alle Schriftarten.
Leider funktioniert der Zugriff auf "dhoObject.fonts" aber nicht mehr
("alert(dhoObject.fonts == null);" wird z.B.
gar nicht erst ausgeführt), wenn ich das in eine Seite einbaue, die im
WebBrowser-Steuerelement aufgerufen wird. Aber da hatte ich glaub ich
schon früher mal Probleme mit ActiveX-Objekten.
Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET zu
instanzieren. Hab ich das richtig verstanden, dass das mit der
IE6-Installation mitkommt?
Mmh, ich kann's zwar über
"createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")" instanzieren,
aber beim Zugriff auf .Fonts gibt's dann irgendwelche absonderlichen
Fehler.
Hallo Herfried,
soweit ich weiß geht das nur beim PDF-Writer, beim PDF-Distiller geht das
nicht. Letzteren benutze ich, weil ich grundsätzlich Probleme bei der
Ausgabe von Visio-Zeichnungen mit dem PDF-Writer habe. Aber das ist glube
ich schon OT.
--
Gruß Scotty
> ...
> Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET zu
> instanzieren. Hab ich das richtig verstanden, dass das mit der
> IE6-Installation mitkommt?
Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
willst.
Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft und
dabei die auf dem Server installierten Schriften ermittelt werden. Es
sei denn Du hast vor, und bisher verschwiegen, dass Du eine der (noch)
etwas unüblichen Varianten im Sinn hast, bei der auch .NET
client-seitig läuft, etwa Silverlight, .NET-Browser-Controls oder
Browser-Apps.
Die auf dem Client ermittelten Schriften, wie nun auch immer ermittelt,
nützen Dir auf der Server-Seite recht wenig, wenn der Anwender eine
Schrift auswählt, die auf dem Server nicht installiert ist. Denn dann
ist es auch egal, wie Du auf der Server-Seite eine Ausgabe erstellst,
egal, ob als Bild (BMP, JPG, ...) oder als PDF oder XPS oder was auch
immer.
Es wäre vielleicht ganz gut, wenn Du das geplante Szenario einmal kurz
im Zusammenhang beschreiben könntest, erst mal völlig ohne jeden
Gedanken an irgendeine Möglichkeit einer konkreten Implementierung.
Viele Grüße
Harald M. Genauck
"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)
>> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
>> NT\CurrentVersion\Fonts
> Der Schlüssel enthält zumindest solche wie Courier
> ("Schriftartendatei", *.fon) und Global Monospace ("Composite Font
> File", *.CompositeFont). Allerdings leider nicht "unsere" Schriftart
> für's CorporateDesign ("Type 1-Schriftartendatei", *.pfm), wobei das
> wirklich ein ziemlich absonderliches Format zu sein scheint.
>
> Da werd ich mir mal das von dir gepostete Beispiel zu Gemüte führen.
> Ich hoffe nur, dass das dann auch für die "Type 1-Schriftartendatei"
> funktioniert ...
Type 1-Schriftartendateien (*.pfm) sind Postscript-Fonts. Diese können
unter Windows gar nicht direkt als Schrift installiert (und verwendet)
werden, sondern nur über den Adobe-Type-Manager. Dieser wird aber bei
einem beliebigen Client nur ganz ganz selten vorhanden sein.
> Hab ich das richtig verstanden, dass das mit der IE6-Installation
> mitkommt?
ja, das hast Du richtig verstanden. In dem Link zu der Dokumentation
kannst Du das noch mal in der Remarks Sektion lesen:
"Dialog Helper was introduced in Microsoft Internet Explorer 6"
> Mmh, ich kann's zwar über
> "createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")" instanzieren, aber
> beim Zugriff auf .Fonts gibt's dann irgendwelche absonderlichen Fehler.
die musst Du schon hier nennen, raten können wir ja nicht.... ;-)
>> Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET
>> zu instanzieren. Hab ich das richtig verstanden, dass das mit der
>> IE6-Installation mitkommt?
>
> Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
> willst.
>
> Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
> der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
> instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft
> und dabei die auf dem Server installierten Schriften ermittelt
> werden. Es sei denn Du hast vor, und bisher verschwiegen, dass Du
> eine der (noch) etwas unüblichen Varianten im Sinn hast, bei der
> auch .NET client-seitig läuft, etwa Silverlight,
> .NET-Browser-Controls oder Browser-Apps.
Hat denn irgendwer irgendwann hier in dem Thread was von ASP.NET oder
ner Web-Anwendung erzählt?
Wir nutzen einfach in einer Windows-Anwendung das
WebBrowser-Steuerelement und da besteht ich auch die Möglichkeit, den
HTML-Code vor der Anzeige in eben diesem noch zu verändern. Wo der
"dynamische" HTML-Code dann her kommt ist doch erstmal egal. Das kann
aus der .NET-Anwendung sein, das kann per JavaScript direkt in der
Seite erfolgen usw.
Ich will einfach nur eine Liste über ALLE Schriftarten haben, die auf
dem Rechner installiert sind, so wie bspw. Word das auch anbietet -
nix weiter. Welche Schriftarten der Nutzer davon verwendet ist doch
ihm überlassen.
> Type 1-Schriftartendateien (*.pfm) sind Postscript-Fonts. Diese
> können unter Windows gar nicht direkt als Schrift installiert (und
> verwendet) werden, sondern nur über den Adobe-Type-Manager. Dieser
> wird aber bei einem beliebigen Client nur ganz ganz selten vorhanden
> sein.
Dann ist das bei uns im LAN wohl so geschehen. In Word usw. lässt sich
die Schriftart wunderbar verwenden und was an Kunden rausgeht, geht
als Papier oder PDF raus.
Könnte es sein, daß Du da den beliebten Fehler machst, 'Type 1' mit
'Opentype' zu verwechseln? 'Type 1' (*.PFB (@Harald: 'B' <> 'M'!!),
Postscript-Schrift) ist eine vollständige Schriftdefinition, 'Opentype'
(*.TTF, *.OTF, *.TTC) nur eine Ergänzung zu 'TrueType' und 'Type 1'.
--
Thorsten Albers
albers (a) uni-freiburg.de
Ich hab da ehrlich gesagt keine Ahnung! Ich hab einfach nur
abgeschrieben was mir der Schriftarten-Eigenschaften-Dialog ausgibt.
Und da steht halt "Type 1-Schriftartendatei" und als Datei die
"...PFM", wobei es aber im Windwows\Fonts-Verzeichnis anscheinend
beides gibt, also PFB+PFM.
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben.
Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt
ist.
>> Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
>> willst.
>>
>> Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
>> der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
>> instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft
>> und dabei die auf dem Server installierten Schriften ermittelt
>> werden. Es sei denn Du hast vor, und bisher verschwiegen, dass Du
>> eine der (noch) etwas unüblichen Varianten im Sinn hast, bei der
>> auch .NET client-seitig läuft, etwa Silverlight,
>> .NET-Browser-Controls oder Browser-Apps.
> Hat denn irgendwer irgendwann hier in dem Thread was von ASP.NET oder
> ner Web-Anwendung erzählt?
Nun ja... hast Du nicht, stimmt. Es liegt aber nahe, davon auszugehen,
wenn nicht explizit ein anderes Szenario vorgestellt wird. Und das
hattest Du bis dahin nicht gemacht. Mein Einwand war sicher nicht böse
gemeint, sondern kam nur in Anbetracht dessen, dass schon so manche
Frage gestellt wurde, wobei dem Fragesteller die Trennung zwischen
Webserver und Client nicht klar war (die Fragen nach MessageBoxen etwa
sind typisch dafür ...).
Aber jetzt ist Dein Szenario ja eindeutig klar und nachvollziehbar.
:-)
> 'Type 1' (*.PFB (@Harald: 'B' <> 'M'!!),
Ein Postscriptfont besteht üblicherweise aus zwei Dateien, der
PFB-Datei, eine Binärdatei, die die Glyphendaten enthält, und einer
AFM- oder PFM-Datei (letztere als neueres Binärformat), die die
Metricdaten enthält.
Siehe auch (und auch bezüglich "Type 1" u.a.):
http://en.wikipedia.org/wiki/Type_1_and_Type_3_fonts
Dann ist es tatsächlich eine 'Type 1'-Schrift, und Deinem System steht
vermutlich, wie Harald schon sagt, der Adobe Type Manager zur Verfügung.
Schon klar. Aber wenn man die Dateinamenserweiterung eine
Postscript-Schriftdatei angibt, sollte das wohl eher PFB als PFM sein. Mit
der PFB kann man auch ohne die PFM etwas anfangen, mit der PFM aber nicht
ohne die PFB.
Aber das ist natürlich simpelste H-a-a-r-Spalterei...
> Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben.
> Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
das ist ungewöhnlich, aber ein Zeichen, das in deinem Code,
oder dem Code der Komponenten etwas nicht stimmt. Kannst
Du mal Code posten + .NET Version, OS Version und anderes
für dich wichtig sein könnte mitzuteilen? Hast Du irgendwelchen
Unsafe Code in deinem Program?
>> Es wurde versucht, im geschützten Speicher zu lesen oder zu
>> schreiben. Dies ist häufig ein Hinweis darauf, dass anderer
>> Speicher beschädigt ist.
>
> das ist ungewöhnlich, aber ein Zeichen, das in deinem Code,
> oder dem Code der Komponenten etwas nicht stimmt. Kannst
> Du mal Code posten + .NET Version, OS Version und anderes
> für dich wichtig sein könnte mitzuteilen? Hast Du irgendwelchen
> Unsafe Code in deinem Program?
Da ist nix besonderes:
Als Code, der über das MS ScriptControl ausgeführt wird:
set p = createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")
?p.fonts.count
Da kommt ein Fehler, aber ohne Meldung, was aber ggf. auch daran
liegen kann, wie wir das ScriptControl verbastelt haben.
... bzw. wenn ich das im VB-Editor von Excel ausführe:
Automatisierungsfehler: Das aufgerufene Objekt wurde von den Clients
getrennt.
... bzw. das selbe ohne "set" im .NET-Code (dann kommt o.g. Fehler).
Sobald man versucht, auf p.fonts zuzugreifen kommt der Fehler.
Ich hab das auf zwei XP-Rechnern probiert, Grundlage ist .NET 2.0.