Beliebige Programme per C# manipulieren

Programme per C# manipulieren - am Beispiel NotepadsIn folgendem Artikel soll es darum gehen, wie man mittels C# andere Programme ansteuern, anpassen und erweitern kann. Als Beispielszenario wollen wir mittels einer kleinen C#-Applikation das standardmäßig mit Windows ausgelieferte Programm “Notepad” um eine Zusatzfunktion erweitern.
Konkret soll sich die C#-Anwendung in alle geöffneten Notepad Instanzen einklinken, die Oberfläche um einen neuen Button erweitern und Klicks auf diesen Button abfangen. Bei einem Klick auf den Button soll der Text aus dem Notepad-Textfeld an unsere Anwendung geschickt und mittels einem Markdown Parser (Was ist Markdown?) in HTML umgewandelt werden.
Das fertige Endprodukt unseres Artikels soll dann wie in dem nachfolgenden Video aussehen, dass ich für euch erstellt habe.

Im Rahmen des Artikel werden wir das Programm Schritt-für-Schritt […]

C# DateTime.Ticks in Unix-Timestamp und andere Formate umrechnen

C# DateTime.Ticks ConverterMit den DateTime-Funktionen des .NET-Frameworks lässt sich so einiges anstellen. Der Umgang damit gestaltet sich, meiner Meinung nach, sehr angenehm. Einzige Voraussetzung: Man befindet sich in einer reinen .NET-Umgebung. Kommen andere Systeme ins Spiel, so geht die Rechnerei los. Aber woran liegt es, dass man zum Beispiel DateTime.Ticks nicht mit der PHP-Funktion mktime() vergleichen kann?
Ruft man den “Timestamp” eines DateTime-Objekts (DateTime.Ticks) ab, so bekommt man die Anzahl der Ticks seit dem 01.01.0001 00:00Uhr zurück. Ein Tick wiederum ist 100 Nanosekunden lang.
Ein Unix-Timestamp, so wie ihn mktime() zum Beispiel produziert, gibt im Gegenteil zu DateTime.Ticks die Anzahl der Sekunden seit dem 01.01.1970 zurück.
Ein direkter Vergleich ist somit nicht möglich. Wie umgerechnet werden muss, möchte ich euch heute anhand von ein paar kurzen Snippets zeigen.
Unix-Timestamp -> DateTime.Ticks

private static DateTime TimeFromUnixTimestamp(int unixTimestamp)
{
[…]

Einfache XML-Serialisierung in C#

C# XML SerialisierungHeute möchte ich euch zeigen, wie man eine XML-Serialisierung in C# durchführen kann. Serialisierung selbst, bedeutet, dass man ein Objekt in eine andere, transportable Form umwandelt. Mittels XML-Serialisierung ist es uns zum Beispiel nötig, ein Objekt einer Klasse in Form einer XML-Datei abzuspeichern und auch wieder herzustellen.
Das kann Sinn machen, wenn man ein Objekt in seinem Zustand nach dem Schließen und erneuten Öffnen einer Anwendung wiederherstellen oder wenn man ein Objekt beispielsweise per HTTP übertragen möchte.
Für unser Beispiel habe ich folgende Klasse Blog erstellt:

public class Blog
{
public string User { get; set; }
public string Pass { get; set; }
public string Subdomain { get; set; }
public string BaseUrl { get; set; […]

Artikel auf Blogspot erstellen – C# .NET Blogger API

Blogger C# API LogoHeute möchte ich euch zeigen, wie man mittels C# Blogartikel auf Blogger.com (Blogspot.com) erstellen kann. Hierfür benötigt ihr zu aller erst die Google.GData.Client.dll, welche ihr im Google. Net API Pack findet.
Das API-Pack könnte ihr euch hier von Google herunterladen. (Die Datei heißt Google_Data_API_Setup_2.0.1.0.msi. Beachtet bitte, dass sich die Versionsnummer – 2.0.1.0 – im Laufe der Zeit natürlich ändern kann.) Wenn ihr den Download abgeschlossen habt, installiert das Paket, öffnet ein neues Projekt im Visual Studio und bindet die Google.GData.Client.dll ein.
Die .dll-Datei findet ihr im Downloadverzeichnis des API-Pack. (Wie ihr eine DLL einbinden könnt, habe ich hier bereits beschrieben.)
Wenn ihr die DLL eingebunden habt, kann es auch schon losgehen. Einen Post aka Blogartikel könnt ihr wie folgt erstellen:

private static int AddPost(string title,
[…]

Höhe einer TextBox in C# verändern

Ich gebe zu, der Titel klingt geradezu trivial. Genauer betrachtet ist es aber gar nicht so einfach die Größe eines TextBox Controls in C# zu ändern, denn eine TextBox hat die Autosize-Eigenschaft nicht. Bei anderen Controls kann man die Autosize-Eigenschaft auf false setzen und dann die Höhe (Height-Property) verändern. Bei der TextBox geht dies so leider nicht.
Wie es doch geht, möchte ich euch nachfolgend zeigen. Der Trick ist folgender:

textBoxTest.Multiline = true;
textBoxTest.MinimumSize = new Size(150, 24);
textBoxTest.Size = new Size(150, 24);
textBoxTest.Multiline = false;

Zuerst muss man die Multiline-Eigenschaft auf true setzen. Danach kann man nach Lust und Laune die MinimumSize-, sowie die Size-Property anpassen, um die Größe der Textbox zu verändern. Wenn man fertig ist, setzt man die Multiline-Eigenschaft wieder auf false. Die TextBox behält die eben gesetzte Größe dennoch. So einfach ist das.
Wer sich jetzt noch fragt, wofür man das braucht, wenn die TextBox sich doch selbst in ihrer Größe anpasst, der sollte […]