Komfortabler Dateimanager mit vielen Funktionen

Entwicklung

Office 2011 im MSDN verfügbar

By Sven on 27.10.2010 - 20:55 in MSDN with 4 Kommentare

Ich war schon etwas überrascht, als mir der Feed der MSDN-Downloads anzeigte, dass Office 2011 für den Mac zum Download bereitsteht:

K32GetModuleFileNameExW wird nicht gefunden

By Sven on 30.07.2010 - 16:05 in Windows SDK with 2 Kommentare

Nach der Umstellung vom Windows SDK für Vista auf das von Windows 7 zeigte das Installationsprogramm von SpeedCommander unter Windows XP und Vista beim Start plötzlich folgende Meldung an:

---------------------------
setup.exe - Einsprungpunkt nicht gefunden
---------------------------
Der Prozedureinsprungpunkt "K32GetModuleFileNameExW" wurde in der DLL "KERNEL32.dll" nicht gefunden.
---------------------------
OK
---------------------------

Der Grund dafür ist, dass mit Windows 7 alle Funktionen der PSAPI.DLL in den Kernel gewandert sind. Wenn man nun für Windows 7 kompiliert, dann werden alle Funktionsnamen auf die entsprechenden Kernelfunktionen gemappt. Die Implementierung findet man in der psapi.h:

//
// Give teams a choice of using a downlevel version of psapi.h for an OS versions.
// Teams can set C_DEFINES=$(C_DEFINES) -DPSAPI_VERSION=1 for downlevel psapi
// on windows 7 and higher.  We found that test code needs this capability.
//
#ifndef PSAPI_VERSION
#if (NTDDI_VERSION >= NTDDI_WIN7)
#define PSAPI_VERSION 2
#else
#define PSAPI_VERSION 1
#endif
#endif

#if (PSAPI_VERSION > 1)
#define EnumProcesses               K32EnumProcesses
#define EnumProcessModules          K32EnumProcessModules
#define EnumProcessModulesEx        K32EnumProcessModulesEx
#define GetModuleBaseNameA          K32GetModuleBaseNameA
#define GetModuleBaseNameW          K32GetModuleBaseNameW
#define GetModuleFileNameExA        K32GetModuleFileNameExA
#define GetModuleFileNameExW        K32GetModuleFileNameExW
......
#endif

Die Kernelfunktionen existieren aber nur ab Windows 7. Auf älteren Systemen können sie beim Programmstart nicht aufgelöst werden und es erfolgt eine Fehlermeldung.

Zur Abhilfe definiert man einfach vor dem Einbinden der psapi.h den entsprechenden Kompatibilitätsschalter:

#define PSAPI_VERSION		1

Nun werden die Funktionen nicht mehr gemappt und wie bisher gewohnt in der PSAPI.DLL gesucht.

Updates und neue Funktionen

By Sven on 29.04.2010 - 09:15 in Entwicklung with Keine Kommentare

Seit der Umstellung auf den TFS arbeite ich mit den drei Quellcodesträngen Dev, Main und Release. In Dev spielt sich alles für die nächste Hauptversion ab, Main enthält die aktuelle Hauptversion mit neuen Funktionen und Fehlerbehebungen. Unter Release werden alle veröffentlichten Versionen abgelegt.

Bisher war es immer so, dass mit der anstehenden Veröffentlichung eines Updates unterhalb von Release ein neuer Zweig mit dem aktuellen Stand von Main erstellt wurde. Größere Änderungen während des öffentlichen Betastest muss ich mir möglichst verkneifen, da sie nicht mehr ausreichend getestet werden konnten. Das schränkt aber für einen gewissen Zeitraum auch die Weiterentwicklung der aktuellen Hauptversion ein.

Die Veröffentlichung von Visual Studio 2010  und der damit aktualisierten und an Windows 7 angepassten MFC passierte nun zu einem für das nächste SpeedCommander-Update ungünstigen Zeitpunkt. 30 Tage sind zum Abklopfen von möglichen Nebenwirkungen zu kurz, allerdings wollte ich auch nicht wieder einen Monat verlieren.

Der sehr interessante Bericht in der c’t 7/2010 über die Linux-Entwicklung brachte mich dann auf eine Idee. Durch das Abspalten des Release-Zweigs gleich mit der ersten öffentlichen Betaversion wird dieser automatisch vor größeren Änderungen geschützt. Gleichzeitig kann die Entwicklung unter Main für das darauf folgende Update ganz normal weitergehen. Einzelne Fehlerbehebungen unter Main können trotzdem per Mausklick nach Release übertragen werden.

Auf diese Weise lässt sich ein gewisser Stillstand bei der Entwicklung vermeiden, ohne jedoch in Gefahr zu laufen, kurz vor der Veröffentlichung eines Updates wieder Fehler einzubauen.

VA X für VS 2010 ist auf dem Weg

By Sven on 29.10.2009 - 17:30 in Tools & Bibliotheken, Visual Studio 2010 with Keine Kommentare

Visual Studio ohne Visual Assist ist wie Windows ohne SpeedCommander. Im Blog von Whole Tomato ist nun zu lesen, dass mit einer Version für Visual Studio 2010 in den nächsten ein bis zwei Wochen gerechnet werden kann.

Stingray gibt’s immer noch

By Sven on 28.10.2009 - 14:45 in Tools & Bibliotheken with 2 Kommentare

Stingray war Mitte/Ende der neunziger Jahre zusammen mit Dundas einer der führenden Anbieter für MFC-Komponenten. Ich kann mich noch genau daran erinnern, wie perplex ich damals war, als mich unmittelbar nach einer Bestellung Scott Wingo (Mitbegründer von Stingray und MFC-Experte) anrief und mir für die Bestellung dankte.

Im Januar 1998 wurde Stingray dann von Rogue Wave übernommen. Anfangs lief alles wie gewohnt weiter, aber nach einem Jahr wurden die Strukturveränderungen dann sichtbar. Die Stingray-Produktreihe war  plötzlich nur noch eine unter vielen, die Preise stiegen an und auch die Aktualisierung der Komponenten verlangsamte sich spürbar. Das war dann der Moment, in dem ich mich nach anderen Alternativen umgeschaut und bis 2003 die BCGControlBar verwendet habe.

Heute kam wieder ein Newsletter von Rogue Wave, in dem die Verfügbarkeit von Objective Studio 10.2 angekündigt wird. Beim Anschauen der Demos fand ich mich in der Vergangenheit wieder. Im Vergleich zu der letzten von mir gekauften Version 6 vor 10 Jahren hat sich kaum etwas geändert. Alles scheint auf dem Stand von Office 2000 stehengeblieben zu sein.

Kurz nach dem Erscheinen von Windows 7 ermöglicht die Preview von Objective Studio 11, dass sich Symbolleisten, Menüs und Bedienelemente wie die von nativen Vista-Applikationen verhalten. Bei Erscheinen von Windows 8 kommt dann sicher auch Unterstützung für Windows 7.

Mein Interesse an einem Produkt lässt auch spürbar nach, wenn Preisinformationen nicht öffentlich sichtbar sind und diese erst nach einer Registrierung angefragt werden können. Wenn ich mir die in der eMail aufgelisteten Preise anschaue, dann erschließt sich auch, warum Rogue Wave das so handhabt.

Objective Toolkit kostet in der 32-bit Ausführung 1.045 €, die 32/64-bit Variante ist für 1495 € erhältlich. Für das ganze Studio (Toolkit, Edit, Views, Chart, Grid) zahlt man 2495 € in der 32-bit Ausführung und 3395 € für die 32/64-bit Kombination. Die Preise verstehen sich netto zzgl. der entsprechenden Mehrwertsteuer. Das braucht man wohl nicht mehr zu kommentieren, wenn man sich mal die Preise von Codejock und BCGSoft anschaut. Das Produkt des damaligen Mitbewerbers Dundas gibt es übrigens mittlerweile für lau.

MSSQL-Datenbanken sichern

By Sven on 23.10.2009 - 09:30 in Tools & Bibliotheken with 4 Kommentare

Mit Datenbankprogrammierung hatte ich bisher weniger zu tun. Einzige Ausnahme war das kleine Programm SpeedCD, welches seine Daten in einer dBase-Datenbank abgelegt hat. Aber das ist schon lange her, damals war ich noch glücklich mit Turbo Pascal für Windows.

Meine Erfahrungen mit dem MSSQL-Server beschränken sich daher auf das Ausführen eines Installationsprogramms sowie das Installieren eines Servicepacks. Mehr war für das Aufsetzen des TFS vor einem Jahr auch nicht nötig. Ich hatte aber keinen blassen Schimmer, wie man die Datenbankdateien mit Boardmitteln sichert und wiederherstellt. Ab und zu soll es ja mal passieren, dass einen die Daten aus unerfindlichen Gründen verlassen oder man im TFS etwas macht, was man hinterher tief bereut. Sicherungen sollen da helfen.

Glücklicherweise fand ich in der c’t einen Hinweis auf das Programm DBSave. Die der Zeitschrift beiliegende ältere Vollversion war leider etwas eingeschränkt, sie sicherte nur eine Datenbank. Eine Lizenz der aktuellen uneingeschränkten Version kostet 49 Euro. Wenn man aber nur eine Serverinstanz hat und auf automatische oder inkrementelle Sicherungen verzichtet, dann kann man DBSave auch als Freeware einsetzen (kommerziell und privat). Beim ersten Start muss dann die Eingabe des Freischaltcodes abgebrochen werden.

DBSave präsentiert sich als Formularanwendung mit mehreren Registerkarten. Auf der ersten Seite wird der Name des SQL-Servers eingetragen. Nach erfolgreicher Verbindungsaufnahme werden die Datenbanken angezeigt:

SQL-Server

Die dritte Seite fragt das Ziel der Sicherung ab. Unterhalb des Ordners wird dann für jede Datenbank ein eigener Ordner erstellt, in dem die Sicherungsdaten abgelegt werden:

Sicherungspfad

Ist alles eingetragen, dann kann man die Konfiguration über die Symbolleiste speichern. Der Start der manuellen Sicherung ist etwas schwer zu finden, da er über das Kontextmenü des Symbols im Infobereich erfolgt:

Sicherung starten

Der Abschluss der Sicherung wird über eine Statusmeldung mitgeteilt:

Statusmeldung

Die Sicherung erfolgt im laufenden Betrieb, am SQL-Server muss nicht herumgespielt werden. Also genau das richtige für einen, der sich nicht weiter auskennt.

Screenshots unter Vista

By Sven on 11.06.2008 - 10:00 in Tools & Bibliotheken with 4 Kommentare

z42 fragte gestern in einem Kommentar zu Projektspezifischen Umgebungsvariablen, mit welchem Programm ich die Screenshots unter Vista mache. Bis einschließlich Windows XP habe ich immer SnagIt v6 verwendet, was auch schon etwas älter ist. Mit Vista hatte SnagIt aber so seine Probleme, auch die neueren Versionen haben bei Dialogen nicht immer 100%ig funktioniert.

Während den Anfängen der Vista-Programmierung habe ich oft im Blog von Kenny Kerr gelesen und somit auch die Entwicklung seines Screenshot-Tools Window Clippings mitverfolgt. Im Gegensatz zu anderen Programmen entfernt Window Clippings den durchscheinenden Hintergrund unter Vista (z.B. bei Titelzeilen) automatisch, so dass auf den Screenshots keine Unschönheiten auftauchen. Das Programm kann natürlich auch eine ganze Menge mehr, aber das ist alles auf der Webseite beschrieben.

Mit der Version 2.0 wurde die Software kostenpflichtig, $18 sind aber ein fairer Preis.

Wir sind ja nicht von der Post

By Sven on 06.06.2008 - 10:00 in Tools & Bibliotheken with 4 Kommentare

Das sagte gestern früh der UPS-Mensch, als er mir ein am Dienstag bei Intel Press bestelltes und am Mittwoch verschicktes Bücherpaket in die Hand drückte und ich es einfach nicht glauben konnte, dass die Auslieferung so schnell erfolgte.

Wer das bis zum 30. Juni geltende Angebot auch noch wahrnehmen möchte: Zu den $69,95 für die beiden Bücher kommen noch einmal $26,00 für die UPS-Expresszustellung (einzige Versandoption) sowie knapp 15 Euro Zollgebühren (bei Übergabe fällig). Eins der beiden Bücher (Multi-Core Programming) gibt es ab Mitte Juni auch in Deutsch, bei Amazon wird es bereits für 54,90 Euro gelistet.

Erster Treffer

By Sven on 04.06.2008 - 10:00 in Entwicklung with 2 Kommentare

Letzte Woche hatte Ralf mir von einem Absturz in SpeedCommander berichtet, der während der Deinstallation eines Windows-Updates auftrat. Anhand des mitgelieferten Mini-Speicherabbilds konnte ich erkennen, dass der Absturz während einer Dateisystemaktualisierung auftrat, und zwar während der Bearbeitung der Datei ’ntldr‘. Der eigentliche Absturz erfolgte in der Windows-Funktion StrCmpI beim Test auf eine bestimmte Erweiterung.

Erst kam mir das etwas merkwürdig vor, da diese Funktion zum Erweiterungstest ja sehr häufig verwendet wird. Beim anschließenden manuellen Aufruf mit dem Dateinamen ’ntldr‘ erkannte ich dann das Problem. Ich hatte die Dokumentation zu PathFindExtension nicht korrekt gelesen und den Rückgabewert nur auf einen NULL-Zeiger geprüft und nicht auch noch auf einen leeren String.

Damit wurde der zurückgegebene Zeiger auch bei einer nicht vorhandenen Erweiterung um eins erhöht (um den Punkt zu überspringen) und fleißig gegen eine Liste mit bekannten Erweiterungen verglichen. Im normalen Betrieb war der nachfolgende Speicherbereich wohl immer gut gefüllt und damit gültig. Im minimierten Zustand räumt Windows aber immer wieder Speicher frei, was dann zur Zugriffsverletzung führte.

Ohne Mini-Speicherabbild wäre die Fehlersuche sehr viel schwieriger geworden, weil die wichtigen Begleitumstände unbekannt bleiben. Die neue Funktion hat sich also schon gelohnt.

TortoiseSVN: Kontextmenü ohne Icons

By Sven on 02.06.2008 - 10:00 in Tools & Bibliotheken with 5 Kommentare

Ich habe schon immer eine Abneigung gegen die Anzeige von Symbolen im Explorer-Kontextmenü. Das hatte anfangs damit zu tun, dass dieses Menü dafür einfach nicht vorgesehen war und diese Symbole aufgrund der beschränkten Möglichkeiten in der Regel nur 14 Punkte groß waren und mit maximal 16 Farben angezeigt wurden. Meistens brauchte man also viel Phantasie, um eine mögliche Information erkennen zu können.

Mit der Zeit waren aber immer mehr Programmierer der Meinung, mit einem entsprechenden Symbol punkten zu können. Ein Farbklecks mag ja bei einem Menü ohne weitere Symbole noch herausragen, aber bei vielen Farbklecksen fällt die Auswahl schon schwerer.

Unter Vista sind die einzelnen Kontextmenü-Einträge etwas größer, was vermutlich mit dem Befehl Als Administrator ausführen zusammenhängt. Dieser Befehl enthält als einziger ein Symbol, was wohl mit seiner besonderen Bedeutung zusammenhängt. Anfangs war das etwas ungewohnt, aber mit der Zeit empfand ich die Menüs aufgrund der größeren Abstände auch als besser lesbar.

Nach der Installation von TortoiseSVN sah das Kontextmenü aber plötzlich ganz anders aus. Die Abstände zwischen den Einträgen waren extrem verkürzt, zudem ist das Schneckensymbol Schildkrötensymbol (Korrektur) in meinen Augen nicht wirklich eine Augenweide, vom fehlenden Abstand zwischen Symbol und Text mal ganz abgesehen:

Kontextmenü mit Symbolen

Beim Stöbern im Quellcode von TortoiseSVN fand ich glücklicherweise eine Option, über die man das Verhalten im Kontextmenü steuern kann:

REGEDIT4

[HKEY_CURRENT_USER\Software\TortoiseSVN]
"OwnerdrawnMenus"=dword:00000002

Damit unterlässt es TortoiseSVN, die Proportionen vom Kontextmenü zu verändern und fügt keine eigenen Symbole hinzu. So gefällt mir es dann wieder.

Top