-
ACHTUNG - NEUES BLOG
Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
|
Die grafische Länge eines Strings mit C# bestimmen
30.08.06 - .NET, Base Framework, WPF Beitrag von Norbert Eder| | In manchen Fällen (bei der Erstellung von UserControls oder der Verwendung von GDI+) ist es notwendig, die grafische Länge eines Strings zu kennen (also nicht nur die Anzahl der Zeichen). Nachfolgender Code zeigt, wie dies bewerkstelligt werden kann:
string test = "This is a test!";
Font font = new Font("Arial", 10.0F);
Graphics g = this.CreateGraphics();
SizeF sizeInfo = g.MeasureString(test, font);
this ist in diesem Fall eine Form, kann jedoch genausogut eine PictureBox etc. sein.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
WMI Code Creator
29.08.06 - Base Framework Beitrag von Norbert Eder| | Mehr zufällig als gewollt, fand ich gestern ein kleines Tool von Microsoft zur Generierung von Code für die Arbeit mit der WMI. Dieses Tool erlaubt es in einer GUI WMI Namespaces und Klassen auszuwählen und erstellt entsprechend der Auswahl passenden Sourcecode.
Folgende Sprachen werden unterstützt:
* C#
* Visual Basic .NET
* Visual Basic Script (VBS)
Weitere Features:
* Browsing namespaces
* Method execution
* Support of remote computer
* and more …
Download WMI Code Creator 1.0
| | | 2 Kommentare
- 1035 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Strong named assembly trotz Referenz auf eine ActiveX Komponente Teil 3
25.08.06 - Base Framework Beitrag von Norbert Eder| | Im zweiten Teil dieser Serie erwähnte ich das Tool AxImp.exe. Ich fand jedoch einen wesentlich einfacheren Weg heraus, diese Aufgabe mit Visual Studio 2003 zu erledigen.
Hierzu ist lediglich das Projekt-Eigenschaften-Fenster des aktuellen Projektes zu öffnen. Unter Common Properties/General finden sich die beiden Einträge
* Wrapper Assembly Key File und
* Wrapper Assembly Key Name
Im ersten Feld ist der Pfad zum Keyfile anzugeben, im zweiten ein entsprechender Name. Dadurch werden die Wrapper-Klassen automatisch signiert.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Strong named assembly trotz Referenz auf eine ActiveX Komponente Teil 2
25.08.06 - Base Framework Beitrag von Norbert Eder| | Ebenfalls sehr interessant ist das Tool AxImp.exe.
Das ActiveX Control Importer Tool konvertiert Typ-Informationen einer COM-Typ-Library in ein Windows Forms Control.
Unter Windows Forms ist es nur möglich Controls zu hosten, die von der Control-Klasse abgeleitet sind. AxImp.exe generiert nun einen Wrapper für ActiveX Komponenten welche unter den Windows Forms verwendet werden können.
Um also ein ActiveX Control hostne zu können, muss ein entsprechendes Wrapper-Control erstellt werden. Dieses muss zudem von AxHost abgeleitet sein. Das Wrapper-Control enthält dabei eine Instanz des zugrundeliegenden ActiveX Controls und bietet die Möglichkeit darauf zuzugreifen. Alle Methoden, Eigenschaften und Events können genutzt werden.
Um beispielsweise einen entsprechenden Wrapper für das Internet Explorer Control zu erstellen, sind folgende Befehle auszuführen:
sn -k shdocvw.snk
AxImp %WINDIR%System32shdocvw.dll /keyfile:shdocvw.snk
Die beiden benötigten Dateien AxSHDocVw.dll und SHDocVw.dll werden daraufhin erstellt.
Für Informationen über tlbimp.exe verweise ich auf den ersten Teil [1] dieses Themas.
[1] Informationen über tlbimp.exe
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Strong named assembly trotz Referenz auf eine ActiveX Komponente
23.08.06 - Base Framework Beitrag von Norbert Eder| | Will man eine Assembly per Strong Name signieren und hält diese Assembly eine Referenz auf eine ActiveX Komponente (beispielsweise AxInterop.SHDocVw), dann kommt es zu folgendem Fehler:
Assembly generation failed — Referenced assembly ‘AxInterop.SHDocVw’ does not have a strong name
Dieser Fehler ist jedoch recht einfach zu umgehen.
Durchzuführende Schritte
Hierzu benötigen wir den Pfad zur ursprünglichen ActiveX Komponente (hier namentlich als MyActiveX.dll geführt). Der Pfad kann mittels der bereits vorhanden Referenz (Eigenschaften) ermittelt werden. Die ActiveX-Komponente ist nun mittles tlbimp.exe zu importieren:
tlbimp.exe MyActiveX.dll /out:Interop.MyActiveX.dll
/keyfile:MyKeyFile.snk
Nach diesem Vorgang ist die vorhandene Referenz auf die Interop-Assemlby zu entfernen und die neu erstellte Interop.MyActiveX.dll einzubinden. Ein Rebuild sollte nun fehlerlos durchlaufen.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
.NET User Group gesucht?
22.08.06 - Base Framework Beitrag von Norbert Eder
Object Mapping oder doch lieber DataBinding?
22.08.06 - .NET, Datenverwaltung Beitrag von Norbert Eder| | Oft bekommt man in diversen Foren die Frage zu sehen, ob denn nun im eigenen Projekt ein Object Mapping oder doch ein DataBinding verwendet werden soll. Hier ein paar Punkte - aus meiner Sicht - um diese Frage zu beantworten.
Aus meiner Erfahrung sollte Object Mapping dann verwendet werden, wenn untenstehende Fragen mit Ja beantwortet werden können.
* Gibt es jede Menge Data-Objects welche auf ebensolche Tabellen gemappt werden sollen und stammen diese auch alle von der gleichen Basis-Klasse ab?
* Könnte der Fall eintreten, dass das zugrunde liegende Datenbank Management System (DBMS) ausgetauchst wird? Sollte das Projekt generell unterschiedliche DBMSs unterstützen?
* Sind für die Entwicklung der Lösung mehr als 15 Manntage notwendig?
* Soll die Lösung von vielen unterschiedlichen Usern eingesetzt werden? (Open Source Projekt, kostenlose Webanwendung)
Können alle Fragen mit einem klaren Ja beantwortet werden, würde ich persönlich zu einem Object Mapping (beispielsweise NHibernate [1]) raten. In anderen Fällen würde ich dann doch eher ein simples DataBinding vorziehen.
Aber Achtung: Immer gründlich die Zukunft im Auge behalten und nicht immer nur von der Jetzt-Situation ausgehen. Dinge können sich ändern. Wurde einmal eine Entscheidung getroffen, kann diese meist nur mehr sehr schwer geändert werden.
Bei Anregungen oder einfach Dingen die ich nicht bedacht habe, bitte ich einen Kommentar zu hinterlassen.
[1] NHibernate
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
WebRequest und SSL Zertifikate
21.08.06 - ASP.NET Beitrag von Norbert Eder| | Muss man via .NET auf Webseiten zugreifen, die per SSL gesichert sind, kommt es hin und wieder zu Problemen, wenn die Zertifikate nicht verifiziert werden können. Diesem Problem kann man aus dem Weg gehen. Dazu einfach die folgende Klasse implementieren:
public class TrustAllCertificatePolicy
: System.Net.ICertificatePolicy
{
public TrustAllCertificatePolicy()
{}
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert,WebRequest req, int problem)
{
return true;
}
}
Danach ist die Policy nur mehr zu aktivieren. Dies kann folgendermaßen erreicht werden:
System.Net.ServicePointManager.CertificatePolicy =
new TrustAllCertificatePolicy();
Und schon sollte der Zugriff auf diese Webseiten funktionieren.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Mal ein Spielchen für Zwischendurch ...
20.08.06 - Internet Beitrag von Norbert Eder
Übersetzungs-Add-In für Office 2007
18.08.06 - Microsoft Office Beitrag von Norbert Eder| | Wer täglich mit Office arbeitet und oft zwischen Deutsch und Englisch übersetzen will, dem könnte mein neuestes Add-In für Office 2007 (eine Office 2003 Variante ist in Vorbereitung) gefallen. Mit der Unterstützung von Paul Hemetsberger (dict.cc) wurde dict.cc im im Sidebar-Style eingebunden.
Dieses Service kann bis auf weiteres absolut kostenlos verwendet werden. Rückmeldungen werden gerne gesehen.
Download Office 2007 dict.cc Add-In
| | | 5 Kommentare
- 1859 mal angesehen
| 1 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|