Start page: ARABART home
← DinarSoft

HandyLauncher

The Seamless Launcher

Your own start menu in the corner of the screen, and every shortcut opens in the screen direction you chose for it.

Latest
3.4, March 2006
First
1.0, August 2003
Price then
$5.49
Today
Free
Runs on
Pocket PC 2002, Windows Mobile 2003 and 5. Portrait, landscape and square screens
HandyLauncher
The Today screen in September 2006, with HandyMenu’s and HandyLauncher’s icons at the bottom right.
HandyLauncher open: My Documents, Pocket Excel, Pocket Word, Calculator, File Explorer, Internet Explorer, MSN Messenger and Solitaire.
The Today screen in September 2006, with HandyMenu’s and HandyLauncher’s icons at the bottom right.

The story

HandyLauncher put a tiny icon on the Today screen that opened your own menu of programs, folders and documents. Anything you wanted, one tap away, without filling the home screen. A second menu opened with tap-and-hold, so it held twice as many shortcuts.

From version 3.2 it did something clever. It turned the screen to portrait or landscape before opening each shortcut, so your spreadsheet always opened wide and your notes opened tall. Advanced users could even pass it command-line options, the way you pass flags to a script.

Every version

From DinarSoft’s revision history and installers. Press Run to play through them, or step one at a time.

HandyLauncher.history
  1. HandyLauncher 1.0 August 23, 2003

    • The first release.
  2. HandyLauncher 2.0 August 12, 2004

    • English and German.
    • Colorful menus you design.
    • A -X option to open the menu from the top of the screen.
  3. HandyLauncher 3.0 September 24, 2004

    • Two menus: one for tap, one for tap-and-hold, for twice the shortcuts.
  4. HandyLauncher 3.2 March 11, 2005

    • Turns the screen to portrait or landscape before it opens each shortcut.
  5. HandyLauncher 3.3 November 8, 2005

    • Windows Mobile 5 support.
  6. HandyLauncher 3.4 March 15, 2006

    • Square screens.

Build your own launcher

HandyLauncher put your favorite things one tap away. Its icon sat in the tray, in the corner of every Pocket PC screen. Tap it for one menu, tap and hold for a second one.

A shortcut could open anything: a program, a document, a folder, a song. Each one could even turn the screen sideways before it opened. Below are its two menus exactly as its installer wrote them, drawn by its own owner-drawn menu code. Beside them is its own Shortcut Setup page, rebuilt from the dialog templates inside HandyLauncher.exe. Add a shortcut, delete one, swap the menus, then tap the icon.

Start10:47
CalendarContacts
Its icon sits at the bottom of the Today screen. Tap it, or tap and hold it.
HandyLauncher
  • My Documents
  • ----------------
  • Pocket Excel
  • Pocket Word
  • ----------------
  • Calculator
  • File Explorer
  • Internet Explorer
  • MSN Messenger
  • Solitaire

Shortcut Setup

Menu Name

Menu Items

Name :

Target :

Cmd. Line :

Shortcut Properties

Orientation :

Menu
The Shortcut Setup page. Pick a menu, then tap + to add a shortcut.

The first menu is open, as its setup program filled it. Tap a shortcut to launch it.

The whole program is one file of 83,456 bytes for the Pocket PC. A small helper runs once at install time and writes the two starting menus into the registry. “HandyLauncher” holds My Documents, Pocket Excel, Pocket Word and five more, and “ExtraLauncher” holds My Device, MS Reader and the Games folder. Since version 2.0, the switch -X opens the menu from the top of the screen instead. Add a number to -X and it sets how far down, so a hardware button can open it too.

What HandyLauncher is made of
2002 to 20082026Why it is the same idea
An icon in the tray, the corner strip of small icons A menu bar icon on a Mac, a quick-settings tile on Android One tap from anywhere, without leaving what you are doing.
SHRecognizeGesture: was it a tap, or a tap and hold? A long press on a phone One target, two actions.
ChangeDisplaySettingsEx, found by name at run time screen.orientation.lock() with feature detection Turn the screen when the device can, carry on when it cannot.
ShellExecuteEx: open this, whatever it is Tapping a link, or open on a Mac Name the thing; the system picks the app.
Menus kept as values in the registry localStorage, or an app’s settings file Settings that survive a restart.

One icon, two menus

Since version 3.0, a quick tap opens the first menu and a tap and hold opens the second. Twice the shortcuts, behind the same little icon.

The clever part is how few lines it takes. When the stylus touches its icon, Windows Mobile sends HandyLauncher a message. It works out the corner of the screen from its size, so the same code fits a 240-pixel screen and a 480-pixel one. Then it hands that point to the system’s own gesture watcher. It answers with one number: zero for a tap, anything else for a hold. Press its icon below, quickly or slowly.

Press and hold its icon, or give it a quick tap.

HandyLauncher.exe the tray icon
  1. 12620mov r3,#0BD0h / orr r3,r3,#5; its tray message, 0BD5h
  2. 12628cmp r1,r3
  3. 1262Cbeq tray
  4. 12724tray:cmp r5,#201h; the stylus went down?
  5. 12734cmp r4,#1389h; on icon 5001, its own?
  6. 12744mov r3,#20; the form: 20 bytes
  7. 12750bl GetDeviceCaps; screen width
  8. 12768bl GetDeviceCaps; screen height
  9. 1277Cbl WindowFromPoint; who owns the corner
  10. 127D8mov r3,#1; just tell me
  11. 127E0bl scale; 1, or 2 on VGA
  12. 127F0sub r0,r5,r3; menu y = height - 25 x scale
  13. 12800bl SHRecognizeGesture; watch the stylus
  14. 12804movs r3,r0
  15. 1280Cbeq tap; 0: a tap
  16. 12810ldr r1,=menu2; held
  17. 1281Cldr r1,[r1,#218h]; Reverse on? swap
  18. 126A0tap:ldr r1,=menu1
  19. 126ACldr r1,[r1,#218h]; Reverse on? swap
  20. 126C8bl ShowMenu
The same in C
  1. case WM_TRAY:// 0BD5h
  2. if (!down || icon != 5001) break;
  3. SHRGINFO g = { sizeof g };
  4. g.ptDown.x = width() - 2;
  5. g.ptDown.y = height() - 2;
  6. g.hwndClient = WindowFromPoint(pt);
  7. g.dwFlags = SHRG_RETURNCMD;
  8. menuY = height() - 25 * scale();
  9. if (SHRecognizeGesture(&g))// held
  10. menu = reverse ? &m1 : &m2;
  11. else// a tap
  12. menu = reverse ? &m2 : &m1;
  13. ShowMenu(menu);
Watches
r1
menu 2 shown
Help

Up it comes: ExtraLauncher, the second menu.

For engineers: the gesture form

The form is a SHRGINFO: 20 bytes holding its own size, the window to watch, the point where the stylus came down and a flag. HandyLauncher sets the flag to SHRG_RETURNCMD (1), so Windows Mobile draws its red dots, waits, and returns GN_CONTEXTMENU for a hold instead of sending a message. The tray message number is 0BD5h and the icon number 5001, both its own. The menus live at 1D458h (first) and 1D238h (second); the Reverse setting at 1C2B8h + 218h swaps the two pointers before the menu opens. The scale comes from sub_19078, which reads the screen’s width and height once and answers 2 when either is 480.

Each program, its own way up

Some programs are happier sideways. A spreadsheet wants a wide screen; a book wants a tall one. From version 3.2, each shortcut in HandyLauncher can carry its own orientation: Portrait, Landscape (R), Landscape (L), or Use Current.

The call that turns the screen only exists on Pocket PCs from 2003 Second Edition on. Instead of refusing to start on older ones, HandyLauncher looks the call up by name the first time it needs it, and remembers the answer. Then it asks where the screen is now, and only turns it when it has to.

Landscape (R): the screen turns to 90° before Pocket Excel opens.

HandyLauncher.exe turn, then open
  1. 18F28ldr r0,[r4,#8]; looked it up before?
  2. 18F38bl LoadLibraryW; "coredll.dll"
  3. 18F44bl GetProcAddressW; "ChangeDisplaySettingsEx"
  4. 18F94cmp r6,#0; the shortcut setting
  5. 18F98beq done; 0: Use Current
  6. 18FB8mov r8,#0C0h; the form: 0C0h bytes
  7. 18FBCmov r5,#800000h; orientation only
  8. 18FC8mov r3,#2; CDS_TEST: just ask
  9. 18FE4mov pc,fp; call it
  10. 19014mov r6,r4; Portrait: 0
  11. 1900Cmov r6,#1; Landscape (R): 90
  12. 19000mov r6,#4; Landscape (L): 270
  13. 19024cmp r6,r3 / beq done; already there?
  14. 19054str r6,[sp,#188h]; the new orientation
  15. 1906Cmov pc,fp; call it again: turn
The same in C
  1. if (!looked) {
  2. cds = find("ChangeDisplaySettingsEx");
  3. if (!cds || setting == 0)
  4. return;// Use Current
  5. DEVMODE dm = { .dmSize = 0xC0 };
  6. cds(NULL, &dm, NULL, CDS_TEST, NULL);
  7. want = DMDO[setting];// 0, 90 or 270
  8. if (want == now) return;
  9. dm.dmDisplayOrientation = want;
  10. cds(NULL, &dm, NULL, 0, NULL);// turn
Watches
r3
0 apply
Help

…and this time flag 0: do it. The screen turns to 90°, then the program opens.

Programs, documents, folders, songs

A launcher that only launched programs would be half a launcher. HandyLauncher takes anything you can name, and asks a single question first: is this a folder?

A folder, or the top of the whole device, opens in File Explorer. Everything else goes to ShellExecuteEx, and Windows works out the rest: a program starts, a document opens in Pocket Word, a song in Windows Media Player. In today’s terms the whole function is one line:

isFolder(target) ? open('fexplore.exe', target) : open(target);   // the system picks the app
target\My Documents\Letter.pswa file
  • File Explorer
  • The program itself
  • Pocket Word
  • Windows Media Player

A document: Windows looks up its type and opens Pocket Word.

HandyLauncher.exe open a shortcut
  1. 190ECbl FindFirstFileW; what is the target?
  2. 190FCbl FindClose
  3. 19104ands r3,r3,#10h; the folder bit
  4. 19108movne r5,r4; folder: it becomes the argument
  5. 1910Cldrne r4,=fexplore; and File Explorer the program
  6. 19118bl lstrcmpW; the root, "\"?
  7. 19128ldreq r4,=fexplore
  8. 19138mov r3,#60; the form: 60 bytes
  9. 1913Cstr r4,[sp,#10h]; what to open
  10. 19160strne r5,[sp,#14h]; its argument
  11. 19178bl ShellExecuteEx; Windows opens it
The same in C
  1. h = FindFirstFile(target, &fd);
  2. if (h != INVALID_HANDLE_VALUE)
  3. if (isDir(fd)) explore(target);
  4. if (!lstrcmp(target, L"\\"))
  5. explore(target);
  6. sei = { 60, ..., target, args };
  7. ShellExecuteEx(&sei);// Windows picks
Watches
r0
1 opened
Help

It does not need to know which program opens it. Windows looks up the file type and picks one, like a double-click.

One engine, three apps

HandyLauncher, HandySwitcher and HandyMenu look like three programs. Inside, they share one engine that DinarSoft wrote once and built into all three.

The bytes show it. Every program file lists its functions in a small table. Line up the 2006 builds of all three apps, set aside the addresses (each program puts things in different places), and whole functions match, instruction for instruction. They cover how a Pocket PC’s code is read and folded, the key engine and the disguised install date. They also cover the theme colors, the font that scales with the screen, the icon builder and the color picker. In this map, each block is one of HandyLauncher’s 161 functions, as wide as its code.

24 functions 4,508 bytes of code, instruction for instruction, in all three apps

also in HandySwitcher 2.7 and HandyMenu 3.6   HandyLauncher’s own   161 functions, 37,912 bytes in all. Tap a lit block with a dark edge.

HandySwitcher 2.7 0x124A0

  1. 124A0push {r4, r5, r6, r7, r8, sb, lr}
  2. 124A4sub sp, sp, #0x1ec
  3. 124A8mov r6, r0
  4. 124ACmov r4, r1
  5. 124B0bl #0x1a7fcwcslen
  6. 124B4mov sb, r0
  7. 124B8mov r0, r4
  8. 124BCbl #0x1a7fcwcslen
  9. 124C0mov r2, #0xf2
  10. 124C4mov r5, r0
  11. 124C8mov r1, #0
  12. 124CCadd r0, sp, #0
  13. 124D0bl #0x1a91cmemset
  14. 124D4mov r2, #0xf2

HandyLauncher 3.4 0x156C8

  1. 156C8push {r4, r5, r6, r7, r8, sb, lr}
  2. 156CCsub sp, sp, #0x1ec
  3. 156D0mov r6, r0
  4. 156D4mov r4, r1
  5. 156D8bl #0x1a280wcslen
  6. 156DCmov sb, r0
  7. 156E0mov r0, r4
  8. 156E4bl #0x1a280wcslen
  9. 156E8mov r2, #0xf2
  10. 156ECmov r5, r0
  11. 156F0mov r1, #0
  12. 156F4add r0, sp, #0
  13. 156F8bl #0x1a40cmemset
  14. 156FCmov r2, #0xf2

HandyMenu 3.6 0x17ED0

  1. 17ED0push {r4, r5, r6, r7, r8, sb, lr}
  2. 17ED4sub sp, sp, #0x1ec
  3. 17ED8mov r6, r0
  4. 17EDCmov r4, r1
  5. 17EE0bl #0x18b40wcslen
  6. 17EE4mov sb, r0
  7. 17EE8mov r0, r4
  8. 17EECbl #0x18b40wcslen
  9. 17EF0mov r2, #0xf2
  10. 17EF4mov r5, r0
  11. 17EF8mov r1, #0
  12. 17EFCadd r0, sp, #0
  13. 17F00bl #0x18b64memset
  14. 17F04mov r2, #0xf2

The key engine: a 120-number shuffle keyed by the product name: 484 bytes. The same instructions in all three files. Only the addresses move, because each program puts it in a different place.

Your Pocket PC Code:

BC11 - 18CC - CSRB - C9RG

Enter Your Unlock Key Here:

The License Key dialog, with the DINAR globe logo of the 2006 builds: the same nine controls in all three apps.

Custom Colors

Menu Text

Menu Background

Icons Background

Highlighted Text

Highlighted Background

Menu Colors :

The Custom Colors page: the same eighteen controls, the same five colors.

The same goes for the screens around the engine. The License Key dialog and the Custom Colors page carry the same controls and the same words in all three apps. When DinarSoft made one of them better, all three got better.

For engineers: how the functions were compared

Function bounds come from each file’s .pdata section. Each function is disassembled with Capstone; branch targets inside the function become offsets, calls to other functions become a placeholder, calls to Windows keep their names, and every literal loaded from the code keeps its value unless it points into the program, which becomes a placeholder too. Strings stay as strings. Two functions count as the same when what is left matches exactly. Pairwise, HandySwitcher 2.7 and HandyLauncher 3.4 share 27 functions (5,080 bytes), HandySwitcher and HandyMenu 3.6 share 31, and HandyLauncher and HandyMenu 27. The script is research/dinarsoft/re/handylauncher/shared.py.

The keys that open every copy

HandyLauncher was shareware: fifteen days to try it, then a sixteen-letter key. DinarSoft also built in a handful of keys that open every copy, on every device.

When you install it, the installer leaves the date in a small file, \Windows\mcterthr.dat. It is disguised as fourteen bytes with a checksum, so a curious hand cannot read it and a changed byte is caught. HandyLauncher counts the days from there. A normal key belongs to one device. The app reads the device’s ID and folds it into the sixteen characters shown on its License Key page as “Your Pocket PC Code”. Then it runs them through the key engine with the product name, HandyLauncher3. If your key matches, you are registered.

If it does not match, HandyLauncher tries again with five built-in sixteen-letter names instead of the device code. One is Yasser’s own, YASSERMOHAMEDALI. One is GIVEAWAYVERSION1, a give-away version, as its name says. Three are names from his family. A key made from any of them opens every copy. HandyLauncher even compares those keys with a loop of its own and a little arithmetic, so a cracker waiting on the usual compare call never sees them go by.

typedFJAAZCHSTETUNPAQ
madeFJAAZCHSTETUNPAQ

All sixteen letters match: registered.

HandyLauncher.exe the keys for every device
  1. 11F8Cbl lstrcmpW; the key for this device?
  2. 11F98ldr r1,=YASSERMOHAMEDALI; a built-in name
  3. 11FB8bl keyengine; with "HandyLauncher3"
  4. 11FC4cmp r4,r0; same length?
  5. 11FD8next:add r2,sp,#14h; from the last letter
  6. 11FECcmp r2,r3; one letter
  7. 12088mov r0,#5; a letter differs
  8. 12000mov r0,#7; all the same
  9. 12004rsb r3,r0,#25 / cmp r3,#18; 25 - 7 = 18?
The same in C
  1. if (!lstrcmp(key(code), t)) ok();
  2. wcscpy(buf, NAMES[i]);
  3. key(buf, L"HandyLauncher3");
  4. if (wcslen(t) == wcslen(buf)) {
  5. int k = n;
  6. while (k && buf[k-1] == t[k-1]) k--;
  7. if (k) r0 = 5;// differs
  8. else r0 = 7;// all the same
  9. if (25 - r0 == 18) ok(); }
Watches
r3
18 registered
Help

25 minus 7 is 18: registered. A cracker looking for a “compare” call finds none here, only arithmetic.

HandyLauncher 3.4, every deviceFJAA - ZCHS - TETU - NPAQ

In 2026, Yasser Awad released HandyLauncher as freeware. This key is made from his own name, YASSERMOHAMEDALI, by the same engine. Type it on the License Key page, four letters in each box. HandyLauncher’s own check, run on an emulated ARM processor, unlocks it with this key, and stays locked for a key that does not match.

Awards and reviews

Best Software Awards
Pocket PC Magazine’s Best Software Awards, later Smartphone & Pocket PC’s, by app and year
App200320042005200620072008
HandyLauncherNo entryNo entryNo entryNo entryNomineeNominee

Download

Here are all 3 installers the Internet Archive kept, as DinarSoft published them. Take the one marked latest: the .CAB installs straight on the device, the .exe installs from a Windows PC.

FileVersionSizeSHA-256
DinarSoftHandyLauncher34.CABInstall on the Pocket PC · latestRecovered from the Internet Archive (Wayback Machine, December 22, 2006)3.4102.9 KB1f7be507d2dccfd06a1e86ca7bea95183c2809696f0b67fc0c526d524c3dcb96
DinarSoftHandyLauncher34_Setup.exeRun on a Windows PC with ActiveSync · latestRecovered from the Internet Archive (Wayback Machine, July 13, 2007)3.4153 KB3224c50bbe72687325ff0ebab65733ccbddf6b4f35d3d26fee57d9be51a9ee6e
DinarSoftHandyLauncher34.exeRun on a Windows PC with ActiveSyncRecovered from the Internet Archive (Wayback Machine, December 16, 2006)3.4204 KB431dbe604331b81c7654ea388fcb7c814d53e0212a9310b37d078c8b5904e3a3
Check a download

Pick an installer you downloaded. Your browser computes its SHA-256 fingerprint on your own device, nothing is uploaded, and looks for it among all 24 DinarSoft files. A match means every byte is the one the Internet Archive kept.

Unlock the full version

HandyLauncher: Register

Every DinarSoft trial asked for an unlock key after 15 days. In 2026 Yasser Awad made HandyLauncher free, so here is the key, made the way DinarSoft made it.

Your unlock key FJAAZCHSTETUNPAQ

One key for every device: HandyLauncher 3.4 accepts a key made from Yasser’s own name. Tap Register… on the About page and type the four groups of four letters.

For HandyLauncher 3.4.

Install it

  1. On a Pocket PC or Windows Mobile phone. Download the .CAB file marked latest. Copy it to the device on a memory card, through ActiveSync, or download it in Pocket Internet Explorer. Then open File Explorer on the device and tap it. It installs itself, like tapping an .apk on Android.
  2. From a Windows PC. Connect the device through ActiveSync on Windows XP, or Windows Mobile Device Center on later Windows, and run the Setup .exe. It sends the app to the device.
  3. In an emulator. Microsoft’s Device Emulator runs Windows Mobile 5 and 6 on a Windows PC. In its File menu, choose Configure and set a shared folder. The device sees that folder as its Storage Card. Put the .CAB there and tap it in File Explorer.
  4. Unlock it. Open HandyLauncher, find its Register screen, and type the key from this page.