Browsed by
Schlagwort: C#

Benchmarking und Zeitmessung von Befehlen und oder Funktionen

Benchmarking und Zeitmessung von Befehlen und oder Funktionen

Wer Code profilen möchte und keinen Profiler zur Hand hat, oder ein Profiler z. B. nicht passend ist, kennt vermutlich die typische Vorgehensweise: Zeitmesser instanziieren, starten, Befehl ausführen, Zeitmesser stoppen, Zeit auslesen und ausgeben.

Und das dann für jeden Befehl noch einmal.

Mithilfe von Lambdas läßt sich das alles deutlich schöner machen.

Mehr lesen Mehr lesen

Greg's XML Editor (minor fixes)

Greg's XML Editor (minor fixes)

Looking for a decent free XML Editor, I stumbled upon Greg’s XML Editor. A nice, lightweight, free XML Editor that seems rather nice for the application I have.
It has, though, some minor faults, like the source does not compile („text_replace.png“ missing), and also the built application has a problem with always displaying 2 nodes (on the left side) for every file added, adding yet another node each time you work in the tree on the left.

So I fixed those (really minor) issues, included Rix’s patch for schemas.

Still, 99.5% of the work was done by Greg, with most of the rest probably done by Rix.

Mehr lesen Mehr lesen

Generic Wrapper for SendMessage calls in C# through reflection

Generic Wrapper for SendMessage calls in C# through reflection

So.. tada.. my first English post on my blog. I always thought there would be a big need for German explanations in the programming world (and world in general) but.. some things should not be hidden from a wider public – which speaks (or reads) English.

I recently wrote a more or less generic wrapper for SendMessage calls to any windows and controls the heart desires (especially the ones in processes that are not your own) – as long as you have got a handle.

There is also a lot of fun stuff in here, like working with pointers (IntPtr), allocating memory in foreign processes, linking your own structures via pointers and filling them with values and a lot more to keep yourself busy for the day.

Mehr lesen Mehr lesen

C#: Build Datum und Autoinkrement der Versionsnummer

C#: Build Datum und Autoinkrement der Versionsnummer

Wer hat nicht noch ein paar Assemblies mit der Version 1.0.0.0 herumfliegen? Und hat auch schon ein paar Updates mit der gleichen Versionsnummer erzeugt bzw. sogar ausgeliefert? (Und verläßt sich z. B. auf Dateidatum oder -größe zur Identifizierung?) Dabei ist es einfach, ein Autoinkrement einzuführen. Und.. damit läßt sich auch direkt erklären, warum so manche Software direkt vielstellige Build- und Revisionsnummern anführt.

Mehr lesen Mehr lesen

C#: Speicher in einem anderen Prozess befüllen lassen sowie checken, ob ein Button gedrückt ist (in einem fremden Prozess)

C#: Speicher in einem anderen Prozess befüllen lassen sowie checken, ob ein Button gedrückt ist (in einem fremden Prozess)

Alle naselang macht man als Programmierer eine besondere Erfahrung. Man hat über viele Stunden an einem Problem rumkniffelt. Sich zwischendurch schon gefragt, ob man an einer unlösbaren Aufgabe verzweifelt. Und schließlich – ganz wie Goethes Mathematiker – hat man das Problem bis zur Lösung gebracht.

Er ist ein Mathematiker und also hartnäckig.
~~Goethe

Das Gefühl, wenn dann alles funktioniert, ist ähnlich, wie es Cloud gegangen sein mag, nachdem er Sephirot besiegt hat, und auf Level 73 aufgestiegen ist. Wenn er denn Gefühle hätte. Oder wenn ein Yogi gerade eine Erscheinung hatte – oder seine Gedanken für eine Weile komplett ausgeschaltet hat. Oder so ähnlich.

Jedenfalls habe ich wieder eine Menge über p/invoke gelernt, wo man immer wieder gut auf der Pinvoke-Seite aufgehoben ist, und festgestellt, wie man per SendMessage Speicher in einem fremden Prozess befüllen lassen kann – das macht die SendMessage nämlich normalerweise automatisch (daher muß man nicht diesen Aufstand machen), allerdings wohl nur, wenn die Message < WM_USER ist. In diesem Fall sieht man dann also, was sonst alles gemacht werden muß, um Daten aus einem fremden Prozess abzuholen.

Mehr lesen Mehr lesen

DevConnections Konferenz in Karslruhe 2011 – Tag 1

DevConnections Konferenz in Karslruhe 2011 – Tag 1

Die DevConnections findet aktuell in Karlsruhe statt. Mal wieder eine gute Möglichkeit, kompetente Sprecher zu sehen und sich mit anderen Anwendern auszutauschen.

Seltsamerweise ist die Konferenz dieses Jahr vergleichsweise schlecht besucht, waren doch andere Konferenzen dieses Jahr ausgefallen, und selbst die Preise wurden zuletzt drastisch gesenkt. Damit die Sprecher nicht vor leeren Stühlen stehen wurden schließlich auch noch die Usergroups eingeladen.

Somit ist die Konferenz relativ gut besucht, die Sprecher sind nach wie vor sehr kompetent. Und wer spät gebucht hat, freut sich über den günstigen Preis. Warum so wenig Leute kommen bei so einem sehr guten Angebot – vielleicht haben sie zu viel Arbeit?

Mehr lesen Mehr lesen

Externe dlls von C# aus aufrufen

Externe dlls von C# aus aufrufen

Wer unter Windows mit C# programmiert kommt irgendwann an die Grenzen von .net – wo Microsoft aufgehört hat, Funktionalität bereitzustellen.

Nach und nach werden immer mehr Funktionen bereitgestellt, teilweise auch solche, die man nie vermutet hätte, aber.. für viele interessante Dinge muß man nach wie vor externen Code aufrufen, wo dem Programmierer lediglich der Name der .dll sowie der Name der Funktion (und natürlich die Parameter) bekannt sind.

(Diese werden dann wie zu guten alten C-Zeiten dynamisch zur Laufzeit geladen (im Gegensatz zur statischen Bindung) – Fehler zeigen sich also meistens erst zur Laufzeit, vorher werden lediglich Unstimmigkeiten zwischen Definition und Aufruf erkannt, aber z. B. keine falsche Definition oder eine fehlende .dll).

Mehr lesen Mehr lesen

Das Programmierer-Einstellungsinterview: Beispielfragen

Das Programmierer-Einstellungsinterview: Beispielfragen

Es gibt viele verschiedene Sichtweisen bei einem Interview.

Die beste Ausgangslage hat hier derjenige, der sich flexibel in die verschiedenen Standpunkte der Partner hineinversetzen kann. So merkt er schneller, was der Sinn einer Frage ist, welche Antwort die gewünschte sein kann, und ob hinter bestimmten Fragen oder Antworten evtl. Dinge stehen, die auf einen späteren größeren Konflikt hindeuten könnten.

Hier will ich ein paar Beispiele für primär technische Fragen geben, anhand derer bis zu einem gewissen Grade festgestellt werden kann, ob der Kandidat fachlich etwas taugt.

Mehr lesen Mehr lesen

Codekicker vs Stackoverflow

Codekicker vs Stackoverflow

Früher gab es einmal Codeproject und Codeguru mit seinem großen Forum.

Fast vergessen scheinen diese Zeiten zu sein, denn.. wer Rang und Namen hat, treibt sich bei Stackoverflow herum. Codekicker ist nun angetreten, um Stackoverflow den ersten Rang im deutschsprachigen Raum abzunehmen.

Somit gibt es nun ein Portal mehr, wo man als Programmierer seine Fragen absetzen kann und evtl. bereits nach kurzer Zeit eine Antwort hat.

Mehr lesen Mehr lesen