How to Decompile Windows chm Help Files

We show how to decompile a Microsoft HTML Help file with chm extension using the hh.exe onboard Windows tool.

Microsoft Compiled HTML Help is a proprietary online help format invented by Microsoft and released August 1997 with Internet Explorer 4. It is still used and supported up to Windows’ latest Version 7.

These help files come with a .chm file extension. They contain a set of HTML files, a TOC (table of contents) and an index file. The files start with the identifier “ITSF” which is an acronym for Info-Tech Storage Format. chm files can easily be produced with a variety of programs, e.g. with HTML Help Workshop.

If you happen to be in need of a decompiled version of a specific chm file, you will find several paid solutions on the Internet that claim to do the job. But there is no need to spend money since Windows is shipped with a program called hh.exe that is not only used to display help files but also suitable for decompiling chm files.

Follow these simple steps to decompile a chm file:

  1. Open a command prompt by pressing Win+R and entering cmd.exe followed by pressing <Return>.
  2. Change to the folder with your chm file using the cd command, e.g.
    c:> cd c:HelpFiles.
  3. Now use the hh command to decompile:
    c:HelpFiles> hh -decompile <TargetFolder> <MyFile>.chm

The process will finish quickly and you will find your decompiled chm parts in the <TargetFolder> directory.

A better way of entering dates in web forms

Entering dates in web forms is ... painful. We show an interesting approach how the form elements could be redesigned for a better user experience.

The currently used methods for entering dates in web formulars are awkward. After discussing some of the shortcomings and limitations of the currently used methods, we will propose a better way of entering dates in web formulars.

Drop-Down ListNowadays, we usually encounter either drop down lists or calendars or a combination of the two. Short drop down lists are easily handled. But if they get longer, reaching their bottom-most entries is getting cumbersome. A typical drop down list to enter the day of a date has 31 entries. If you, e.g., want to enter the 29th, you have to move the mouse a pretty long way down the screen to finally arrive at number 29. This takes an awful lot of time. Sometimes, you even have to use the scrollbar inside of a drop down list! (Think of a list of countries.)

CalendarCalendars seem to be a better choice but suffer from one major drawback: Each calendar has to start on a specific date. If you stay in the same month and year you can finish your task quite fast. But if you have to choose a different month or year, you usually end up with multiple clicks of some kind of forward/backward buttons. This is time-consuming and not user friendly.

Bearing Fitts’s and Hick’s Law in mind, we present an alternative approach to entering dates, or any data in general, in web formulars esp. if you are dealing with long lists of values. Our solution uses the standard drop down list formular elements as a mnemonic anchor for the user but extends their functionality in such a way, that input of data with the mouse is easier than with the default elements. There is no change in behaviour for keyboard users.

Take a look at the following mockup showing an example for a typical web formular that requests personal data. Besides input fields for the first and last name, street, ZIP etc. we have three drop down lists for the birthday (“Geburtsdatum”).

The standard behaviour of these web formular elements is clear. Without any changes a click on the day drop down list would show all days from one to 31 with only minor differences in appearance and behaviour depending on the browser used.

Our proposal for a better way of entering dates uses Javascript and Layers/CSS to alter the default behaviour of the drop down lists. Upon activating the, e.g., drop down list for the day of birth using the mouse, a semicircle showing the numbers 1 to 12 springs into existence on the right hand side of the drop down element as shown in the following picture.

This way, all the numbers from 1 to 12 can be reached with the same amount of time using the mouse, i.e., all numbers have the same distance to the drop down list’s button element (i.e. the triangle) conserving mouse movement. Either the fast forward symbol left to number 12 ist used to scroll to the following numbers 13, 14 etc. Or you can use, even more conveniently, the scroll wheel of your mouse. As soon as number 1 scrolls “out” of the semicircle a fast backward symbol is shown at the top of the semicircle. Usability regarding scrolling heavily depends on the scroll speed. This is still subject to testing. A full 360° circle showing all numbers from 1 to 31 would be perfect, but either the circle is getting to big or the numbers are getting too small for the Art Directors to be happy. 😉

No voodoo how the month…

…and year will look like.

We are still optimizing the user experience. First tests indicate a notable improvement in the time used to enter dates in web formulars using the described semicircle-approach. As soon as the tests and optimizations have been finalized, we will show examples so you can try it out for yourself.

C64 Klingeltöne für’s iPhone

Fetzige C64 Klingeltöne für's iPhone aufbereitet. Gibt's hier bei uns als Direkt-Download.

Bruce Lee, C64 Wer mit dem C64 groß geworden ist, der erinnert sich vielleicht noch an Spieleklassiker wie Gobots, den Joystick-Killer Summergames, Delta oder gar Bruce Lee. Mit Stand 24.12.2009 finden sich mittlerweile unglaubliche 37.801 Commodore 64 Musikstücke in der High Voltage SID Collection. Das ist eher nichts für Dolby Digital, DTS, 9.1 Surround Sound verwöhnte Ohren, aber zum Schwelgen in Erinnerungen an “die gute alte 64er Zeit” reicht es allemahl.

Und wer meint, daß in der historischen Abfolge von ein- zu mehrstimmig piepsenden, dann polyphonen und schließlich wohlklingenden mp3 Klingeltönen, die Zeit überreif für dreistimmige Retro SID Sounds sei, dem kann geholfen werden! In Ergänzung der bei zu findenden C64 Klingeltöne fürs (sic!) iPhone, gibt’s hier noch mehr C64 Klassiker im iPhone-tauglichen m4r-Format (AAC).

Wir starten mit einer Auswahl an Stücken von Chris Hülsbeck, der 1986 mit seinem nach wie vor höhrenswerten Song “Shades” den Musikwettbewerb der damaligen C64-Bibel “64’er” gewann, und seither einer der erfolgreichsten Sound- und Musikproduzenten im Computerspielebereich ist.

iPhone Klingelton (~30 Sek.) mp3-Datei (ungekürzt)
Giana Sisters (631 kB) GianaSisters-TimeWarp1987.mp3 (3,5 MB)
Dulcedo Cogitationis (602 kB) DulcedoCogitationis-1987.mp3 (8,2 MB)
Shades (606 kB) Shades-Markt&Technik1986.mp3 (7,2 MB)
Experiment (872 kB) Experiment-1986.mp3 (737 kB)
Jinks (926 kB) Jinks-RainbowArts1987.mp3 (766 kB)
Antics (565 kB) Antics-TimeWarp1987.mp3 (6,6 MB)
Compilation I (623 kB) CompilationI-Audios1989.mp3 (4,3 MB)
Gem X (602 kB) GemX-KaikoDemonware1991.mp3 (3,4 MB)

Und dann war da noch Rob Hubbard, der uns unvergessliche Sounds für International Karate, Commando, Monty on the Run oder auch Thing on a Spring komponierte. Eines der damaligen Top Spiele, bei denen mindestens ein Quickshot Turbo dran glauben musste, war “Delta”, zu dessen Musik sich Hubbard lt. Wikipedia durch das “Pink Floyd album The Dark Side of the Moon and Philip Glass’ music for Koyaanisqatsi” inspirieren liess. Die bekannten Glass’schen repetetiven Muster finden sich bspw. im unten gelisteten 11-Minuten-Stück(!) “Delta1” wieder, das während der Spielsequenzen im Hintergrund läuft.

Apropos Quickshot Turbo: Viel bekannter und wahrscheinlich auch beliebter war ja der Competition Pro. Ein nahezu unkaputtbarer Klassiker von einem Spielknüppel, den es mittlerweile von Speed-Link in einer Retro-Neuauflage mit USB-Anschluß für den PC gibt (bspw. bei Amazon, siehe rechts). Mitgeliefert wird noch eine umfangreiche Spielesammlung nebst C64 Emulator, damit man mit dem Competition Pro am PC nicht auf dem Trockenen sitzt. Der Joystick hat sicher nicht die Qualität des “alten” Competition Pro, aber für vergleichsweise günstige 15,- € holt man sich den alten C64-Charme direkt auf seinen PC.

iPhone Klingelton (~30 Sek.) mp3-Datei (ungekürzt)
Delta 1 (569 kB) Delta1-Thalamus1987.mp3 (16,4 MB)
Delta 7 (119 kB) Delta7-Thalamus1987.mp3 (143 kB)
Delta 11 (287 kB) Delta11-Thalamus1987.mp3 (324 kB)
Delta 12 (Title) (655 kB) Delta12-Thalamus1987.mp3 (2,1 MB)
Arcade Classics (606 kB) ArcadeClassics-Firebird1987.mp3 (9,4 MB)
Commando (758 kB) Commando-Elite1985.mp3 (5,7 MB)
The Last V8 (758 kB) TheLastV8-Mastertronic1985.mp3 (3,3 MB)
Sanxion (758 kB) Sanxion-Thalamus1986.mp3 (8 MB)
International Karate (758 kB) InternationalKarate-…1986.mp3 (15,5 MB)
Auf Wiedersehen Monty (758 kB) AufWiedersehenMonty-…1987.mp3 (8,8 MB)
Monty On The Run (782 kB) MontyOnTheRun-1985.mp3 (8,4 MB)

Datasoft hat 1983 dem zu diesem Zeitpunkt seit zehn Jahren verstorbenen Gott der Kampfkünste, gemeint ist Bruce Lee, ein Denkmal mit dem gleichnamigen Spiel auf dem C64 gesetzt. Im folgenden, neben Bruce Lee, einige weitere bekannte Titel als iPhone Klingelton und ungekürzte mp3-Datei.

iPhone Klingelton (~30 Sek.) mp3-Datei (ungekürzt)
Yie Ar Kung Fu (758 kB) YieArKungFu-Imagine1985.mp3 (13 MB)
Game Over (758 kB) GameOver-Imagine1987.mp3 (7,4 MB)
Arkanoid (758 kB) Arkanoid-Imagine1987.mp3 (3,3 MB)
Jumpman Jr. (115 kB) JumpmanJr-Epyx1983.mp3 (319 kB)
Ghostbusters (758 kB) Ghostbusters-Activision1984.mp3 (5,7 MB)
G.I. Joe (397 kB) GIJoe-Epxy1985.mp3 (340 kB)
Boulder Dash (467 kB) BoulderDash-1stStarSW1984.mp3 (414 kB)
Beach Head II (758 kB) BeachHeadII-AccessSW1985.mp3 (893 kB)
Infernal Runner (758 kB) InfernalRunner-Loriciel1985.mp3 (918 kB)
Bruce Lee (193 kB) BruceLee-Datasoft1983.mp3 (549 kB)
BMX Simulator (782 kB) BMXSimulator-Codemasters1986.mp3 (1,1 MB)
David Music Demo #2 (782 kB) MusicDemo#2-…1985-86.mp3 (1 MB)
Gobots (782 kB) Gobots-Ariolasoft1987.mp3 (4,9 MB)
Rambo II (758 kB) RamboII-Ocean1986.mp3 (5,1 MB)

Weiterführende Informationen: Die weiter oben bereits erwähnten C64 Klingeltöne fürs (sic!) iPhone von Daniel gehosted bei Eine Beschreibung, wie aus den C64 SIDs Klingeltöne für das iPhone produziert werden können. Die wahrscheinlich vollständigste Sammlung an C64 Klingeltönen als mp3-Dateien, die von Stone Oakvalley mit Original-64ern aufgenommen wurden gibt es in Stone Oakvalley’s Authentic SID Collection. Noch einmal etwa 400 mp3s, die durch Verwendung einer HardSID-Karte ebenfalls sehr authentisch klingen dürften im SID 6581/8580 Recordings Archive. Und die Homepage der High Voltage SID Collection mit der, Stand 03.05.2010, unglaublichen Menge von 37801 SIDs.

MacOS: Finder mit bestimmtem Ordner starten

Eine Lösung, um bei MacOS auf Tastendruck den Finder zu starten und direkt ein bestimmtest Verzeichnis zu öffnen.

MacOS bringt von Haus aus verschiedene Shortcuts mit, um in einem geöffneten Finder-Fenster bspw. das Home- (Shift+Cmd+H) oder Applications- (Shift+Cmd+A) Verzeichnis zu öffnen. Das ist ganz nett, setzt aber einen bereits geöffneten Finder voraus und beschränkt sich auf die von Apple vorgegebenen Ziele.
   Gesucht wird eine flexiblere Lösung, die auf Knopfdruck den Finder mit einem bestimmten, zuvor benannten Verzeichnis öffnet. Eine Lösung ist auf Basis des Tools Butler möglich. Dabei wird Butlers Funktion zum Ausführen eines per Hotkey aktivierten AppleScripts verwendet:

  1. Im Customize-Menu ein neues SmartItem/AppleScript als Hidden-Element anlegen.
  2. Im Source Code-Bereich dieses Elements das nachstehende Skript einfügen. Dabei ist <username> durch den eigenen Usernamen zu ersetzen.
    Das Skript öffnet den Downloads-Ordner in einem neuen Finder-Fenster, stellt im Anschluß die Ansicht auf Listendarstellung um und platziert das Fenster an der (x, y)-Koordinate (150, 64) mit Breite 1000px und Höhe 540px.
  3. Abschließend unter Triggers einen Hotkey wählen, bspw. Shift+Cmd+D.

Ähnlich einfach können Dateien per Shortcut geöffnet werden. Ein Einzeiler genügt, um bspw. eine Datei “Daten.ods” mit NeoOffice zu bearbeiten:

Pablo hat’ä mir eine Dip gegeben!

Meine Diplomarbeit. Für die Welt. Es gab mal eine Version mit binären Seitenzahlen, die ist aber in den Jahren präservativen Umkopierens verloren gegangen.

Am Ende dieses Posts stelle ich der Allgemeinheit, nicht nur selbstlos sondern vor allem auch entgeltfrei, meine Diplomarbeit zur Verfügung. Ein unvergleichlicher Akt von basedowschem Philanthropismus, dessen Inhaltsleere just in dem Moment immanent wird, da das Wissen um die ohnehin (entgelt)freie Verfügbarkeit dieser Art von wissenschaftlichen Veröffentlichungen im Erkenntnisraum des geneigten Lesers auftaucht. Zur Vorgeschichte…
   Während eines kollegialen Austauschs über Werdegang, Studium & Co. wird den Beteiligten bewußt, daß ihre Diplomarbeiten zwar im Datenbunker der eigenen Festplatte gehortet werden, sich aber eines schnellen virtuellen Blätterzugriffes entziehen, da sie allesamt im LaTeX-Format auf ihr digitales Dahinscheiden warten. Auch ein möglicherweise vorhandenes Postscript-Exemplar ist nur noch bedingt hilfreich, hat sich doch das PDF-Format – einer globalen Pandemie gleich – ausgebreitet hat. Damit ist der Auftrag schnell formuliert: Die Dip muß her, und zwar im PDF-Format!
   Nach kurzer Recherche ist eine passende TeX-Distribution für den Mac namens MacTeX gefunden. Nach dem Download läppischer 744,5 MB (sic!) und Installation der entpackten 1,6 GB (doppel-sic!) darf endlich wieder in der Konsole nach Herzenslust gelatext, gebibtext und gemakeindext werden. Einige Kompilationsläufe später ist das gute Stück fertig: Eine Analyse intrinsischer Hardware-Evolution digitaler Schaltkreise. In wunderschönem Layout, mit professionellen Marginalien, und – ganz demütig gesprochen – schlichtweg eine Augenweide! :]


Ein einfacher, Skript-basierter, Weg, um die Netzwerkumgebung (aka Location) auf dem Mac zu wechseln.

Heute geht es um eine Arbeitserleichterung. Es ist die Rede vom Wechsel der Netzwerkumgebung, etwas länglich und umständlich bspw. über diesen Weg möglich: Menuleiste Klick Airport-Symbol » Klick Open Network Preferences… » Klick Dropdownliste Location » Klick Umgebung wählen » Klick Apply » Klick System Preferences schließen. Das sind bedeutend zu viele Klicks (=sechs) für eine tägliche Aufgabe, die damit in die Kategorie Routine gehört und in der Folge nach einer routinewürdigen Lösung verlangt.
   Hier ist eine IMHO elegante, auf AppleScript basierende, Variante die sich des scselect-Befehls bedient. NB: Bei Übernahme des Kodes @home|@work durch die Namen der eigenen Netzwerkumgebungen ersetzen.

Besonders schön ist der Hinweis zur gewechselten Umgebung via Zarvox-Computer-Stimme. Alternativen sind Fred, Trinoids, Cellos oder Victoria (Standard). Das Skript als Applikation bspw. auf den Desktop legen und der Netzwerkumgebungswechsel ist nur noch einen Doppelklick entfernt.
   Edit: Da gibt es noch viel mehr Stimmen! Zusätzlich zu den o.g. stehen noch Agnes, Albert, Bad News, Bahh, Bells, Boing, Bruce, Bubbles, Deranged, Hysterical, Junior, Kathy, Pipe Organ, Princess, Ralph und Whisper zur Verfügung. Zusätzlich kann die Sprechgeschwindigkeit mit dem Befehl [[rate x]] (x zwischen 160 und 210) eingestellt werden, bspw. say "[[rate 180]] Hello!".
   Edit 2: Lernkurve, oh du Lernkurve. Zwar hat die o.g. AppleScript-Tekkie-Lösung ihren ganz eigenen Charme, aber der Netzwerkumgebungswechsel lässt sich doch bedeutend schneller als mit den weiter oben verurteilten sechs Klicks erreichen. Apfelmenü » Location » Netzwerkumgebung wählen, fertig. Aber ich mag jetzt natürlich nicht mehr auf Zarvox und den Einklickwechsel per Hotkey verzichten. 😉