MacOSX: Safari als wxWidgets Control

Um in wxWidgets HTML Seiten anzuzeigen kann man das eingebaute Control wxHTML verwenden. Dieses Control ist einigen Beschränkungen unterworfen, so wird nur ein Subset von HTML Tags unterstützt und es gibt keinen CSS Support. Unter Microsoft Windows kann diese einfach umgehen indem man den Internet Explorer über wxActiveX (bzw. wxIE) einbinden, aber auch für Mac OSX gibt es ein entsprechendes Control um Safari (WebKit) einfach einzubinden.

wxWebKitCtrl ist standardmäßig bei der aktuellen Stable Version von wxWidgets für Mac dabei (2.8.10), nur leider ist es schwer Dokumentation dafür zu finden. Somit bleibt eigentlich nur ein Blick in das entsprechende Header File /wxMac-2.8.10/include/wx/html/webkit.h.

Die Verwendung des wxWebKitCtrl ist einfach:

wxWebKitCtrl *browser = new wxWebKitCtrl(panel_1, wxID_ANY,wxT(""));
browser->LoadURL(wxT("http://www.hagelkruys.at"));

Das erstellte browser Objekt kann wie ein wxTextCtrl verwendet werden und einfach in einer gewünschten Größe in einen Frame oder Dialog eingefügt werden.

Downloads:

KategorienCode Snippets Tags: ,

MacOSX: SmartCard Zugriff über PCSC Daemon

Der Zugriff auf eine SmartCard unter MacOSX ist am einfachsten über den bereits im Betriebssystem integrierten PCSC Daemon (pcscd) zu realisieren. Das Schwierigste ist, herauszufinden wo sich die Header Files und die PCSC Bibliothek befinden.

Header Files und Bibliothek können entweder aus dem aktuellsten SDK, das mit XCode mitgeliefert wird, entnommen werden oder vom Betriebssystem eigenen pcscd.

Header Dateien:

  • SDK: /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/PCSC.framework/Headers/
  • BS: /System/Library/Frameworks/PCSC.framework/Headers/

PCSC Bibliothek:

  • SDK: /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/PCSC.framework/PCSC
  • BS: /System/Library/Frameworks/PCSC.framework/PCSC

Das einfachste Beispiel um den Zugriff auf den pcscd zu testen ist wie folgt:

#include "stdio.h"
#include "wintypes.h"
#include "winscard.h"
#include "pcsclite.h"

int main()
{
SCARDCONTEXT hContext = NULL;
LONG rv;

printf("Establish Context\n");
rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);

printf("Release Context\n");
rv = SCardReleaseContext(hContext);
return 0;
}

Das einfache Beispiel und ein erweitertes mit Zugriff auf Kartenleser und Karte kann hier als Code::Blocks Projekt heruntergeladen werden:
PCSC Simple
PCSC Advanced

Weiterführende Links zum Thema:

KategorienCode Snippets Tags: ,

Proof of Concept: Hooking einer Applikation 2

Wie bereits angekündigt, liefere ich nun eine Windows XP fähige Version nach. Das Problem war, dass in der Hook-DLL einige Funktionen überschrieben und verwendet werden, die nur unter Windows Vista und neueren Betriebssystemen verfügbar sind.

Zusätzlich zu den bereits im letzten Artikel aufgelisteten Funktionen werden nun auch LoadLibrary und FreeLibrary überschrieben.

Das neue VirtualApp Testprogramm kann unter http://www.hagelkruys.at/downloads/VirtualAppTest2.zip heruntergeladen werden. Diese Version läuft unter Windows Vista und Windows XP. Windows 2000 sollte theoretisch auch funktionieren, wurde aber nicht getestet.

Proof of Concept: Hooking einer Applikation

In einem ersten Versuch wurde eine Hook DLL erstellt, welche durch das mitgelieferte Programm in ein “Fremd-Programm” geladen wird. Folgende Funktionen werden überschrieben:

  • Registry Funktionen die in der Advapi32.dll definiert sind
  • Funktionen für den Dateizugriffe, welche in KERNEL32.dll definiert sind
  • Socket Funktionen, welche in der WS2_32.dll definiert sind

Dabei werden die Windows Funktionen umgelenkt und anstelle dieser, die in der Hook DLL beschriebenen Funktionen aufgerufen. In diesen wird mittels DebugOutputString Informationen ausgegeben und der Funktionsaufruf an die Windows Funktion weitergeleitet. Um die Ausgabe der Debug Meldungen anzuzeigen ist das Programm DebugView von Microsoft (bzw. Sysinternals) nötig. Dieses kann unter http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx heruntergeladen werden.

Das VirtualApp Testprogramm kann unter http://www.hagelkruys.at/downloads/VirtualAppTest1.zip heruntergeladen werden. Achtung die Version läuft aktuell nur unter Windows Vista, eine Windows XP Version werde ich noch nachliefern.

Über Anregungen und Verbesserungsvorschläge freue ich mich natürlich.

Codename VirtualApp

Projekt VirtualApp ist der Versuch Windows Programme zu virtualisieren. Alle Zugriffe auf die Windows Registry und auf das Dateisystem sollen umgeleitet werden und so weit virtualisiert, dass das Programm auf einem anderen Windows PC ohne Installation verwendet werden kann.

Ziele

  • Registry Zugriffe umlenken, sodass keine Daten in die Registry des Hostsystems
    abgespeichert werden.
  • Umlenken aller Dateizugriffe, sodass die Dateien in einem eigenen Ordner gespeichert werden.
  • Ausführen des virtualisierten Programmes soll mit niederen Rechten am Hostsystem möglich sein (z.B.: als Gast User Account).
  • Zugriffe auf Systemdatum und Systemzeit soll einstellbar vom Host Betriebssystem kommen oder vom Benutzer definiert werden.
  • Alle Netzwerkzugriffe sollen überwacht werden und einstellbar durch den Benutzer unterbunden werden

Technik
Um die Registry-, Datei- und Datumszugriffe umzulenken werden Windows HOOKs verwendet. Dabei wird eine DLL in den zu hookenden Prozess injected und die in der DLL beschriebenen Funktionen anstelle der Windows Funktionen aufgerufen.

Visionen und Ziele

11. Juli 2008 Keine Kommentare

Ohne die nötigen Visionen und Ziele wäre das Leben ansatzweise nicht so interessant. Jeder braucht ein Ziel auf das er hinarbeiten kann auch wenn andere darüber nur den Kopf schütteln.

Aufgrund meines Interesses für die Spielentwicklung ist es natürlich auch eines meiner Ziele selber ein 3D Spiel zu entwickeln, jedoch hat sich diese Aufgabe als etwas schwieriger herausgestellt als anfangs vermutet. Zu oft verlaufe ich mich in Kleinigkeiten und Verfolgen von unterschiedlichen Ansätzen um in absehbarer Zeit zu meinem Ziel zu gelangen.

KategorienAbout Me Tags:

Wieso diese Homepage?

10. Juli 2008 Keine Kommentare

Obwohl zurzeit noch nicht viel Inhalt vorhanden ist, ist das weitere Ziel jedoch meine Entwicklungen und Programme, sowie nützliche Codesnippets frei öffentlich zugänglich zu machen. Mancher mag darin nicht viel Sinn sehen, aber wieso etwas entwickeln und auf der Festplatte vermodern zu lassen. Da war doch dann die ganze Arbeit und Mühe umsonst.

KategorienAbout Me Tags:

Programmierer und Spieleentwicklung

10. Juli 2008 Keine Kommentare

Wieso ausgerechnet Programmierer?

Mit meinem ersten Computer (ein 386er, nein ich habe nicht mit Commodore begonnen) wurde mein Interesse für die Materie und mit dem installierten Compiler die Liebe zum Programmieren entdeckt.

Meine ersten Versuche mit einem QBasic-Compiler waren trotz Bemühungen nicht von Erfolg gekrönt, jedoch das Interesse war geweckt. Erst später im ersten Jahrgang der HTL Hollabrunn lernte ich meine erste Programmiersprache. Da die wenigen Unterrichtsstunden meinen Wissensdurst nicht stillen konnten hatte ich mir bald einige Bücher zugelegt und mich an eine neue Programmiersprache herangewagt.

Spieleentwicklung

Spiele sind seit den ersten Computern eine der stärksten Antriebsfedern für die Weiterentwicklung der Hardware und Technik. Mit einer genialen neuen Idee und einfacher Umsetzung können Millionen von Menschen begeistert werden. Nicht, dass alle Spiele auf einer einfachen Umsetzung basieren, ganz im Gegenteil es steckt viel komplexe Logik und immer neuere oder adaptierte Technik dahinter.

Meine ersten selbst programmieren Spiele waren ein SNAKE Klone und ein Adventure in ASCII Grafik. Obwohl optisch nicht besonders ansprechend und auch nicht wirklich eine innovative Idee war steckte viel Arbeit dahinter. Damals gab es bei einer größeren deutschen Computerzeitschrift jeden Monat einen Contest. Leser hatten ihre selbst entwickelten Spiele eingeschickt und auf eine Veröffentlichung und positive Kritik gehofft. Viele der eingeschickten Spiele funktionierten beim Testlauf nicht, meines wurde erfolgreich getestet und mit folgendem Satz in der nächsten Ausgabe mitgeliefert: “Einfach Grafik, könnte sogar auf einem Taschenrechner funktionieren”. Ja es war nicht der erste Platz im Ranking und nicht gerade eine umwerfende Kritik, jedoch war es eine Veröffentlichung wert.

Ich hatte auch schon einige Ausflüge in die 3D Welten und modernen Grafikprogrammierung mit DirectX und OpenGL, bin aber leider über die reine grafische Darstellung einfacher Umgebungen nicht hinausgekommen.

Warum arbeite ich nicht als Spieleentwickler?

Ich interessiere mich für den Hintergrund der Spielentwicklung, den Aufbau, die Technik, die Optimierungsmöglichkeiten, die Abläufe, das Design und generelle Konzepte. In einem beruflichen Umfeld werden schnelle und gute Lösungen gesucht, die dem Ziel folgen ein möglichst optimales Programm zu entwickeln, diese Vorstellungen sind vielleicht passend für Firmen aber nicht deckend mit meinem Interesse. Ich will auch unterschiedliche Konzepte ausprobieren, Ansätze verfolgen die vielleicht Zeitverschwendung sind und mich dabei nicht nach Termindruck und Release-Zyklen richten.

Die nahe liegende Schlussfolgerung wäre sich im Bereich der Spieleentwicklung selbständig zu machen. Gerade hier müssen zu viele Kompromisse und Kürzungen aufgrund von Zeit- und Gelddruck vorgenommen werden. Also kann so eine Lösung für mich nur nebenberuflich sein, um wirklich das volle Interesse an der Materie auszufüllen. Deshalb kommt für mich nur privat entwickeln und einen Publisher suchen oder selbst über das Web publishen in Frage.

Und zu guter letzt muss man doch auch sein Hobby etwas vom beruflichen Alltag trennen.

KategorienAbout Me Tags:

Ausbildung und Interessen

8. Juli 2008 Keine Kommentare

Ausbildung

  • 2007 Abbruch des Studiums aus beruflichen Gründen
  • November 2004 bis heute Vollzeitjob bei der Firma A-Trust GmbH
  • Wintersemester 2003: Beginn des Studiums Medieninformatik an der TU Wien, berufsbegleitend
  • September 2003 Vollzeitjob bei der Firma BDC EDV Consulting GmbH
  • 2003 maturiert an der HTL Hollabrunn

Interessen

  • Programmieren
  • Spielentwicklung
  • Riffs von guten Songs mit der Gitarre nachspielen
  • Bleistiftzeichnungen & Acryl
  • Sportlicher Ausgleich: Radfahren
KategorienAbout Me Tags: