BeyondtheTech
24th December 2005, 07:23 AM
I apologize in advance if this gets too technical for some, but after you read it, you may understand why I took the time to do it and ultimately offer it here.
First of all, if you noticed after a soft reset that it takes some time for Windows Mobile to show the programs you have installed on your device, you'll quickly realize that the reason why it's so slow is that it's grabbing the icon image from the shortcut's executable, which is usually located at the end of that executable.
Now, you'll also notice that some icons appear slower than others. Most of the time, it's because the program's executable is usually big. Take Skype, for example. It can take up to 20 seconds just to show the stupid S icon because the single executable is about 5MB big.
All that effort to get to an icon is painstaking, and surprisingly enough, the issue remains in Windows Mobile 5.0. Why Microsoft never learned to cache the icons in a single file is beyond me. And you'll have to deal with it after every soft or hard reset... Of course, the average user here does that often, so you can see where I start to get frustrated.
But with frustration comes inspiration (or desparation).
I have created a small 26KB file called RunSkype.exe. All it does is launch Skype. While that doesn't sound helpful much, you'll realize that if you copy this file to the Skype folder, then create a shortcut to RunSkype.exe and replace the Skype shortcut with this one, you'll see that the icon and program will show up MUCH faster than having Windows Mobile 5 try to poll the 5MB file.
I also took the liberty of making a full VGA-compatible icon for Skype, so it looks good from 16x16 pixels to 64x64 pixels.
You can download the program here: http://www.beyondthetech.com/downloads/phone/hacks/RunSkype.exe
Now, for us HTC Universal owners, you're in for a treat. A really awesome program called MortScript has been released. MortScript is essentially a batch language which you can have steps completely automated for you, based on a text file of commands you create. You can simulate button and keypresses, stylus taps and holds, execute and close programs, read/write registry entries, and much more.
http://www.sto-helit.de/modules/edito/content.php?id=38
One of the biggest gripes I have on the Universal are the developers who have not yet dealt with landscape mode. Some games such as Pocket Mini Golf 2 and Farkle, will either look nice or screwed up, and/or the stylus will not work properly because the image doesn't match the screen coordinates. Avid Universal owners will know what I'm talking about.
Using MortScript, I create this batch file:Rotate 0
RunWait \Program Files\Smart Box Design\Farkle.exe
Rotate 270
If it isn't obvious, the batch file will rotate the display to portrait mode, then launch the program. After the program has exited, it will revert back to landscape mode. Again, Universal owners such as myself have kicked themselves for launching a program knowing they have to flip the screen before they run it in order for it to work. This batch file takes the forgetful step and makes it automatic. Flipping the screen to portrait afterwards makes no difference since it's already in portrait, so you're all good to go.
The only downsides to this are two things: 1. If the program doesn't actually exit, but minimize, then it will never get a chance to rotate back. In that case, I delete the last line of the batch file and change RunWait to just Run. 2. It's obvious that you'd make a shortcut to the batch file, not the program's executable anymore. Soon, you'll notice that all the shortcuts will have the same MortScript icon, and that just looks ugly.
This is where my second executable comes in. But, this is going to require some work and an icon editor such as MicroAngelo (www.microangelo.us).
I created a program called batchrun.exe. After you have created your MortScript batch file, save it as batchrun.mscr and put both files in the program's folder. Drag the batchrun.exe and the original program's executable out to your desktop. Using MicroAngelo's Librarian software, you can extract the icon images out of the original program's executable and inject it into batchrun.exe. That way, when you create a shortcut to batchrun.exe, it will have the original icon of the program you want to run.
So, the chain of command is: batchrun.exe -> batchrun.mscr -> commands + original program's executable
One final word... batchrun.exe is hardcoded to run batchrun.mscr, so you can't change the name of the batch file. In addition, you cannot change batchrun.exe's name either, since it's tied into the programming. But you can modify its icon data all you want.
Some of the programs I have successfully done this for include: Acodic Mobile Info2Go
Handmark Zagat to Go
Resco Diamonds
RealDice.com Texas Hold'em
Smart Box Design Farkle
EdgeQ TrafficEdge
Momentum Games Pocket Mini-Golf 2
Again, the above listed programs do not play well in landscape mode, but with the batch file commands I provided above, it makes using these programs much easier.
Here's batchrun.exe. It currently has my BeyondtheTech Guy logo, but again, use an icon editor software like MicroAngelo to replace it as needed.
http://www.beyondthetech.com/downloads/phone/hacks/batchrun.exe
Here's a bonus. I like keeping the Start Menu as clean as possible. This includes the Recent Start Menu items that appear the moment you start launching away at shortcuts. You may recall that if you never ran anything, all it said was "Recent Programs" and the Start Menu was as short and simple as possible.
Well, you can always get that fresh feeling by creating a MortScript batch file containing this line:RegDeleteKey HKCU,\Software\Microsoft\Shell\TaskSwitch,1,1
Call this file cleanup.mscr and stick it in your \Windows\Startup folder. As soon as you boot up from a soft reset, it will silently wipe out the most recently launched items.
Hope this was helpful to anyone.
If anyone needs help or doesn't understand any of this, just let me know.
First of all, if you noticed after a soft reset that it takes some time for Windows Mobile to show the programs you have installed on your device, you'll quickly realize that the reason why it's so slow is that it's grabbing the icon image from the shortcut's executable, which is usually located at the end of that executable.
Now, you'll also notice that some icons appear slower than others. Most of the time, it's because the program's executable is usually big. Take Skype, for example. It can take up to 20 seconds just to show the stupid S icon because the single executable is about 5MB big.
All that effort to get to an icon is painstaking, and surprisingly enough, the issue remains in Windows Mobile 5.0. Why Microsoft never learned to cache the icons in a single file is beyond me. And you'll have to deal with it after every soft or hard reset... Of course, the average user here does that often, so you can see where I start to get frustrated.
But with frustration comes inspiration (or desparation).
I have created a small 26KB file called RunSkype.exe. All it does is launch Skype. While that doesn't sound helpful much, you'll realize that if you copy this file to the Skype folder, then create a shortcut to RunSkype.exe and replace the Skype shortcut with this one, you'll see that the icon and program will show up MUCH faster than having Windows Mobile 5 try to poll the 5MB file.
I also took the liberty of making a full VGA-compatible icon for Skype, so it looks good from 16x16 pixels to 64x64 pixels.
You can download the program here: http://www.beyondthetech.com/downloads/phone/hacks/RunSkype.exe
Now, for us HTC Universal owners, you're in for a treat. A really awesome program called MortScript has been released. MortScript is essentially a batch language which you can have steps completely automated for you, based on a text file of commands you create. You can simulate button and keypresses, stylus taps and holds, execute and close programs, read/write registry entries, and much more.
http://www.sto-helit.de/modules/edito/content.php?id=38
One of the biggest gripes I have on the Universal are the developers who have not yet dealt with landscape mode. Some games such as Pocket Mini Golf 2 and Farkle, will either look nice or screwed up, and/or the stylus will not work properly because the image doesn't match the screen coordinates. Avid Universal owners will know what I'm talking about.
Using MortScript, I create this batch file:Rotate 0
RunWait \Program Files\Smart Box Design\Farkle.exe
Rotate 270
If it isn't obvious, the batch file will rotate the display to portrait mode, then launch the program. After the program has exited, it will revert back to landscape mode. Again, Universal owners such as myself have kicked themselves for launching a program knowing they have to flip the screen before they run it in order for it to work. This batch file takes the forgetful step and makes it automatic. Flipping the screen to portrait afterwards makes no difference since it's already in portrait, so you're all good to go.
The only downsides to this are two things: 1. If the program doesn't actually exit, but minimize, then it will never get a chance to rotate back. In that case, I delete the last line of the batch file and change RunWait to just Run. 2. It's obvious that you'd make a shortcut to the batch file, not the program's executable anymore. Soon, you'll notice that all the shortcuts will have the same MortScript icon, and that just looks ugly.
This is where my second executable comes in. But, this is going to require some work and an icon editor such as MicroAngelo (www.microangelo.us).
I created a program called batchrun.exe. After you have created your MortScript batch file, save it as batchrun.mscr and put both files in the program's folder. Drag the batchrun.exe and the original program's executable out to your desktop. Using MicroAngelo's Librarian software, you can extract the icon images out of the original program's executable and inject it into batchrun.exe. That way, when you create a shortcut to batchrun.exe, it will have the original icon of the program you want to run.
So, the chain of command is: batchrun.exe -> batchrun.mscr -> commands + original program's executable
One final word... batchrun.exe is hardcoded to run batchrun.mscr, so you can't change the name of the batch file. In addition, you cannot change batchrun.exe's name either, since it's tied into the programming. But you can modify its icon data all you want.
Some of the programs I have successfully done this for include: Acodic Mobile Info2Go
Handmark Zagat to Go
Resco Diamonds
RealDice.com Texas Hold'em
Smart Box Design Farkle
EdgeQ TrafficEdge
Momentum Games Pocket Mini-Golf 2
Again, the above listed programs do not play well in landscape mode, but with the batch file commands I provided above, it makes using these programs much easier.
Here's batchrun.exe. It currently has my BeyondtheTech Guy logo, but again, use an icon editor software like MicroAngelo to replace it as needed.
http://www.beyondthetech.com/downloads/phone/hacks/batchrun.exe
Here's a bonus. I like keeping the Start Menu as clean as possible. This includes the Recent Start Menu items that appear the moment you start launching away at shortcuts. You may recall that if you never ran anything, all it said was "Recent Programs" and the Start Menu was as short and simple as possible.
Well, you can always get that fresh feeling by creating a MortScript batch file containing this line:RegDeleteKey HKCU,\Software\Microsoft\Shell\TaskSwitch,1,1
Call this file cleanup.mscr and stick it in your \Windows\Startup folder. As soon as you boot up from a soft reset, it will silently wipe out the most recently launched items.
Hope this was helpful to anyone.
If anyone needs help or doesn't understand any of this, just let me know.