Komfortabler Dateimanager mit vielen Funktionen

Systemordner

By Sven on 01.08.2011 - 16:00 in SpeedCommander 14 with 5 Kommentare

Den bequemen Zugriff auf die verschiedenen Systemordner per Menü gibt es in SpeedCommander ja schon länger. In der neuen Version haben sich die Einträge auf 33 erhöht. Zudem sind die meisten Ordner jetzt auch per Tastenkürzel erreichbar:

Erweitertes Kontextmenü

By Sven on 29.07.2011 - 16:00 in SpeedCommander 14 with 2 Kommentare

Die Squeez-Erweiterung des Explorer-Kontextmenüs mit Befehlen zum Komprimieren und Entpacken wurde auch in SpeedCommander gerne verwendet. Nach der Einstellung von Squeez vor knapp zwei Jahren kehrt diese nun in SpeedCommander zurück. Klickt man mit der rechten Maustaste auf einen oder mehrere Einträge, so wird am Anfang des Explorer-Kontextmenüs ein Untermenü mit Befehlen von SpeedCommander eingefügt. Darin enthalten sind auch die aus Squeez bekannten Befehle zum schnellen Erstellen eines Archivs:

Ist der gewählte Eintrag eine Archivdatei, dann enthält das Kontextmenü Befehle zum Entpacken des Archivs in den aktuellen Ordner oder in einen Ordner entsprechend des Archivnamens:

Im Einstellungsdialog lassen sich die gewünschten Archivformate für Komprimieren sowie Komprimieren & E-Mail festlegen. Wer das erweiterte Kontextmenü nicht benötigt, der kann es hier auch deaktivieren:

Abzweigungen, Hardlinks und symbolische Links erstellen

By Sven on 27.07.2011 - 16:20 in SpeedCommander 14 with 3 Kommentare

Möchte man unter Windows eine Abzweigung (Junction), einen Hardlink oder einen symbolischen Link erstellen, dann muss man entweder auf die Kommandozeile ausweichen oder die Explorer-Erweiterung Link Shell Extension installieren. Mit SpeedCommander 14 lassen sich diese Aktionen auch ohne zusätzliche Hilfsmittel ausführen.

Ähnlich zur Vorgehensweise bei der Link Shell Extension wählt man zuerst den Ordner oder die Datei aus, den/die man verlinken möchte. Auch eine Mehrfachauswahl ist möglich. Anschließend wird in den Zielordner gewechselt und die entsprechende Aktion gestartet:

Das Erstellen von symbolischen Links ist erst ab Windows Vista möglich, der Nutzer muss zudem über Administratorrechte verfügen. Läuft SpeedCommander mit normalen Benutzerrechten, dann erfolgt eine Nachfrage der Benutzerkontensteuerung.

Vorlage für doppelte Tastenkürzel

By Sven on 25.07.2011 - 16:31 in SpeedCommander 14 with 4 Kommentare

Doppelte Tastenkürzel gibt es schon seit SpeedCommander 13. SpeedCommander 14 enthält neben den bereits bekannten Vorlagen Standard und Windows-Kompatibel nun auch eine Vorlage, die intensiven Gebrauch von den doppelten Tastenkürzeln macht. Die neue Vorlage wird bei einer frischen Installation ohne Übernahme der alten Einstellungen automatisch aktiviert. Über die Registerkarte Tastatur des Anpassen-Dialogs lassen sich die Tastenkürzel auch nachträglich auf eine der drei Vorlagen zurücksetzen.

Bei der Zusammenstellung der Vorlage habe ich die Menübefehle entsprechend ihrer Funktion gruppiert. Das erste Tastenkürzel ist für alle Befehle einer Funktionsgruppe gleich, das zweite entscheidet dann über den jeweiligen Befehl. Die bekanntesten Tastenkürzel wurden aber beibehalten, es wird also weiterhin mit F5 kopiert und mit F8 gelöscht.

Zum besseren Verständnis hier einmal zwei Screenshots für die Tastenkürzel zur Änderung der Darstellung sowie zur Auswahl/Abwahl von Dateien:

Anzeige von Zeitstempeln in Sommer- und Winterzeit

By Sven on 08.07.2011 - 16:00 in SpeedCommander 14 with 5 Kommentare

Bei jedem Wechsel zwischen Sommerzeit und Winterzeit fällt auf, dass sich die Zeitstempel von Dateien und Ordnern plötzlich um eine Stunde geändert haben. Die Zeitstempel selbst werden unter NTFS in GMT-Zeit abgelegt und vor der Anzeige in die lokale Zeitzone konvertiert. In Deutschland ist die Differenz zur GMT-Zeit im Winter eine Stunde und im Sommer zwei Stunden.

Das führt dazu, dass sich im Sommer auch die Zeitstempel für Dateien aus der Winterzeit um eine Stunde verschieben. Wurde eine Datei z.B. am 28. Februar um 15:40 Uhr deutscher Zeit geändert, dann entspricht das einem gespeicherten Zeitstempel von 14:40 Uhr GMT. Mit dem Wechsel in die Sommerzeit liegen zwischen GMT und deutscher Zeit aber nun zwei Stunden und so wird aus 15:40 Uhr im Sommer plötzlich 16:40 Uhr. Mit der Zeit hat man sich an diesen Umstand gewöhnt, weil es halt alle Programme seit vielen Jahren so anzeigen.

In Windows 7 hat sich das aber geändert. Der Explorer zeigt nun für diese Datei auch im Sommer die richtige Uhrzeit von 15:40 Uhr an. Anfangs hielt ich das für einen Fehler, aber nach einigem Nachdenken kam ich zum Schluss, dass SpeedCommander hier eine Anpassung vertragen könnte.

SpeedCommander 14 zeigt die Zeitstempel nun entsprechend der Zeitzone an, aus der sie stammen. Der Zeitstempel vom 28. Februar um 15:40 Uhr bleibt auch im Sommer so, während eine am 1. Juli um 15:40 Uhr geänderte Datei auch im November mit diesem Zeitstempel angezeigt wird. Anfangs wird es wohl etwas Verwirrung geben, weil sich die Anzeige der Zeitstempel im Vergleich zu anderen Dateimanagern unterscheidet. Ich bin mir aber sicher, dass auch andere Programme früher oder später nachziehen.

Benutzerkontensteuerung bei portabler Installation

By Sven on 06.07.2011 - 16:00 in SpeedCommander 14 with 7 Kommentare

Zum Ausführen von Funktionen mit höheren Rechten gibt es zwei Möglichkeiten:

  1. Initialisierung eines COM-Objekts mit administrativen Rechten
  2. Starten eines zusätzlichen Hilfsprogramms mit administrativen Rechten

Ich hatte mich damals für die erste Methode entschieden, weil die programminterne Verwendung quasi einem normalen Funktionsaufruf entspricht. Nach der Erstellung der Schnittstellen für den Zugriff auf Dateien und Registrierung ließen sich alle Programmfunktionen recht einfach an die Benutzerkontensteuerung anpassen. Nachteilig ist nur, dass die entsprechenden COM-Objekte dem System bekannt sein müssen, was zwingend einen Eintrag in der Registrierung erfordert.

Bei Verwendung einer portablen Installation auf einem USB-Stick ist das natürlich kontraproduktiv. Hier hilft es nur, SpeedCommander explizit mit erhöhten Rechten zu starten, wenn Aktionen in UAC-geschützten Ordnern anstehen.

Dieses Problem ließ sich nur durch einen Umstieg auf die zweite Methode lösen. Aus dem COM-Server ist ein normales ausführbares Programm im SpeedCommander-Verzeichnis geworden, mit dem über eine Pipe Funktionen und Parameter ausgetauscht werden. Das funktioniert überraschend gut.

Wie in früheren Versionen auch erscheint die Nachfrage der Benutzerkontensteuerung nur bei der ersten Aktion in einem geschützten Ordner. Alle weiteren Aktionen während der laufenden Sitzung von SpeedCommander müssen nicht mehr bestätigt werden.

Fahrplan für SpeedCommander 14

By Sven on 04.07.2011 - 16:25 in SpeedCommander 14 with 4 Kommentare

SpeedCommander 13 erschien im Oktober 2009, nun wird es langsam Zeit für SpeedCommander 14. Der private Betatest hat heute begonnen, in einem Monat kann sich jeder die erste öffentliche Betaversion herunterladen. Für Anfang September ist eine zweite Betaversion geplant, die finale Version wird dann Anfang Oktober erscheinen.

Die Liste mit den neuen Funktionen umfasst mehr als 60 Einträge. Ich werde versuchen, möglichst viele davon in den nächsten Wochen hier vorzustellen. Natürlich konnten nicht alle Wünsche erfüllt werden, aber es sollte für jeden etwas dabei sein.

Alle Anwender, die SpeedCommander 13 jetzt kaufen, erhalten später auch einen kostenlosen Freischaltcode für SpeedCommander 14. Anwender von SpeedCommander 11 können so übrigens noch 5 Euro sparen, weil sich das Fenster für die letzten beiden Hauptversionen im Oktober von 11/12 auf 12/13 verschieben wird.

SpeedCommander 13.60

By Sven on 20.06.2011 - 12:05 in SpeedCommander 13 with 1 Kommentar

SpeedCommander 13.60 ist fertiggestellt und kann heruntergeladen werden. Kurz vor der geplanten Veröffentlichung wurde noch ein Fehler beim Erstellen einer Programmverknüpfung in UAC-geschützten Ordnern behoben, bei dem die Zieldatei überschrieben wurde. Auf Tablet-PCs lässt sich das Kontextmenü wieder durch längeres Halten des Stifts oder Fingers anzeigen.

Multitouch, MFC 10 und das Kontextmenü

By Sven on 31.05.2011 - 16:30 in MFC, Visual Studio 2010 with 2 Kommentare

Ein Anwender, der SpeedCommander auf seinem Tablet-PC einsetzt, hatte mir geschrieben, dass dort die Anzeige des Kontextmenüs nicht wie erwartet funktioniert. Eigentlich sollte das Kontextmenü erscheinen, wenn man den Stift etwas länger gedrückt hält. In SpeedCommander tut sich da aber nichts.

Die Fehlersuche ergab, dass die Anzeige des Kontextmenüs bis zur Version 13.20 noch funktionierte und der Fehler erst ab der Version 13.30 auftrat. Ein Blick in die Versionsgeschichte zeigte aber, dass es zwischen diesen beiden Versionen keine Änderungen in der Listenansicht gab, die zu diesem Problem hätten führen können.

Mit der Version 13.30 erfolgte allerdings auch der Umstieg von der MFC 9 (SP1) von Visual Studio 2008 zur MFC 10 von Visual Studio 2010. Eigentlich sollte man erwarten, dass eine neue MFC-Version keine Verhaltensänderung nach sich zieht; zumindestens nicht, wenn man neue Funktionen nicht bewusst aktiviert. Die neue Multitouch-Unterstützung der MFC 10 ist hier aber eine Ausnahme, denn sie ändert die Funktionalität eines Fensters auch ohne explizite Verwendung der neuen Multitouch-Funktionen.

Die Ursache des Problems fand sich in der Verarbeitung der Nachricht WM_TABLET_QUERYSYSTEMGESTURESTATUS in der CWnd::OnTabletQuerySystemGestureStatus. Nach Konvertierung der Bildschirmkoordinaten in Koordinaten des Fensters wird die virtuelle Funktion CWnd::GetGestureStatus aufgerufen, die immer den Wert TABLET_DISABLE_PRESSANDHOLD zurückgibt. Die MFC 10 deaktiviert also für jedes von CWnd abgeleitete Fenster die Möglichkeit, das Kontextmenü der rechten Maustaste durch längeres Drücken des Stiftes oder Fingers anzuzeigen. Das ist unabhängig davon, ob die Multitouch-Funktionen verwendet werden oder nicht.

Die eleganteste Fehlerbehebung ist natürlich die Beseitigung der eigentlichen Ursache, indem die Rückgabe von CWnd::GetGestureStatus einfach auf 0 geändert wird. Nach einer Neuerstellung der MFC ist das Verhalten dann für alle Fenster wieder so, wie es in früheren MFC-Versionen war. Multitouch-Erweiterungen für bestimmte Fenster lassen sich trotzdem einbauen, die Funktion ist ja überschreibbar. Leider hat sich Microsoft mit der MFC 10 dafür entschieden, die entsprechenden Make- und Definitionsdateien nicht mehr auszuliefern. Sofern man sich die Dateien für eine Neuerstellung der MFC also nicht selbst zusammenbastelt, bleibt nur die Möglichkeit, die Funktion CWnd::GetGestureStatus in allen eigenen Ableitungen von CWnd zu überschreiben und den Wert 0 zurückzugeben:

ULONG CMyWnd::GetGestureStatus(__in CPoint /*ptTouch*/)
{
    return 0;
}

Entsprechend des Umfangs der eigenen Anwendung und der Anzahl der Fenster mit eigenem Kontextmenü ist das natürlich ziemlich aufwendig. Aber es ist leider auch der einzige Weg, wenn man auf Tablet-PCs mit dem Kontextmenü arbeiten möchte. Einfacher für alle Betroffenen wäre es wohl, wenn Microsoft die nächste MFC-Version entsprechend anpassen würde.

SpeedCommander 13.60.6465 (Beta)

By Sven on 17.05.2011 - 09:05 in SpeedCommander 13 with 3 Kommentare

Die Betaversion von SpeedCommander 13.60 kann ab sofort getestet werden. Compiler, CRT und MFC wurden auf den Stand von Visual Studio 2010 SP1 gebracht. FileSearch akzeptiert die Angabe von Zeiträumen nun auch in umgekehrter Reihenfolge, der erste Zeitstempel muss nicht mehr zwingend älter sein als die zweite Angabe. Die neue SpeedCommander.ini-Einstellung

[ListWnd]
ShowAppState=0

ermöglicht es, dass die Einträge in der Listenansicht auch als aktiv dargestellt werden, wenn das Programmfenster von SpeedCommander inaktiv ist.

Zudem wurden noch einmal etliche Fehler beseitigt. Bei der Hintergrundaktualisierung von Ordnerfenstern sollten nun keine doppelten Einträge mehr auftauchen. Dies konnte passieren, wenn beim Speichern von Dateien temporäre Dateien verwendet werden und diese während der Aktualisierung des Ordnerfensters bereits wieder gelöscht waren.

Top