Note that the execution has taken on a whole new life with new people continuing the development. As there’re new versions arriving almost every day, I can’t keep up with editing the thread starter posts to reflect the latest state of the development. Therefore, you will want to
1. start with the last posts in this thread, particularly looking for my, JZ SmartMort’s and badbob001's posts and announcements.
2. go to http://forum.xda-developers.com/showthread.php?t=382043 for JZ SmartMort’s similarly named, excellent app.
3. badbob's thread is at http://forum.xda-developers.com/showthread.php?t=384271 - you'll want to visit it too
The original, now-outdated article follows:
You, hopefully, already know Opera Mini 4, which, currently, I recommend the most for all Windows Mobile users as the primary browser. It’s especially useful if you are on either a slow (say, GPRS) or expensive (non-flat rate) data plan and/or you also use Opera on the desktop and, therefore, can make use of the excellent, remote (!) favorite synchronization offered by Opera Link.
So far, it was impossible to quickly invoke Opera Mini from any mailer applications by just clicking / activating Web links in them. This was a major stumbling block for many, which is quite understandable. Yes, it’s a major pain in the back to having to rely on Internet Explorer (Opera Mobile, Netfront etc.) for displaying the given Web page - instead of the much faster / cheaper / prettier Opera Mini.
Of course, Pocket PC (using the new terminology, Windows Mobile 6 Professional / Classic) users have always had an escape route. They still could highlight the link and, then, copy it to the clipboard. After that, they could still invoke Opera Mini, go to Menu / Enter Address and paste the URL there. (Assuming, of course, they use a copy/paste-capable MIDlet Manager. The outdated and, unless you have specific needs or an old operating system, in no way recommended TAO isn’t one of them; the recommended Jbed is.) An example of highlighting a link and copying to the clipboard is depicted in the following screenshot:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
This, however, resulted in multiple screen taps and has never been so simple as just clicking a link in the mail body and let the system invoke the browser and pass the link to it.
And, of course, the above-explained way of copying URL’s to Opera Mini doesn’t work with touchscreen-less MS Smartphone (in the new terminology, Windows Mobile 6 Standard) models. Not even with external Copy/Paste tools like VITO’s excellent, free CopyPaste.
Because of the acuteness of the problem, I’ve thought very hard on solving the problem and making Opera Mini (OM for short) a browser that doesn’t suffer from this problem. And, during a lengthy swimming & sauna session, it occurred to me how it can be solved. Yeah, it’s mostly during swimming that I get the best, most revolutionary ideas
First, the pros and the cons so that you can see what you can expect of my solution.
Pros
Fully Seamless integration into Messaging (or any other mailer app), Notes, Word Mobile, PDF readers, MobiPocket (or any other text processing / viewing app) etc under ALL Windows Mobile / Pocket PC operating systems before Windows Mobile 6, on both the Pocket PC and Smartphone platforms
While it’s not compatible with WM6 Smartphones (WM6 Standard devices), on WM6 Pocket PC’s, you can still pretty easily invoke OM and pass the given URL to it.
It’s free and pretty easy to set up
Cons
It isn’t compatible with WM6 Smartphones like the HTC Vox (s710) or the HTC Wings (s730). Sorry.
With WM6 Pocket PC’s (unlike previous OS version), some additional manual work is needed, compared to the pre-WM6 cases. That is, just clicking the link won’t suffice.
It will NOT work on local HTM(L) files on your device – that is, not external links. That is, you won’t be able to render a local HTML file if you click it from File Explorer. However, as it’s mostly remote links that you’ll want to view, not local files, this isn’t that big a problem.
Again, let’s emphasize it again:
with WM6 PPC’s (unlike with pre-WM6 ones), you must copy the URL to the clipboard and only after this click the link!
It does NOT work with touchscreen-less WM6 Smartphones (WM6 Standard devices)! That’s because of the operating system’s inability for any kind of copy/paste operation.
Installation, usage
download and install MortScript if you haven’t already done so. Make sure you install it in the main memory (unless you’re ready to modify the scripts I’ve provided).
download THIS file
depending on your operating system version, go to either the WM5 or WM6 directory of the ZIP file downloaded in the previous step. Note that if you’re still using a pre-WM5 operating system, you’ll need the WM5 version.
transfer OMInvokeAndPasteScript.mscr to \Program Files\MortScript on your device
import the registry file into the Registry (WM5: OMInvokeAndPaste.reg; WM6: OMWM6DefBrowser.reg). if you do this on a MS Smartphone, make sure it is application unlocked. I’ve published several articles on (the absolutely legal) app unlock; see for example THIS
If you absolutely don’t know how the Registry import file needs to be imported, do either of the following:
either get (and, even better, purchase - they DO deserve it as it’s a REALLY excellent app) SOTI’s Pocket Controller. Install it, connect to your device, click the Registry icon. Then, select Edit / Import in the new remote Registry Editor window. Search for the registry file and import it.
or, get Resco Explorer. Install it on your mobile device; make sure you don’t disable the Registry editor install. Start the latter and, then, just exit it – this makes sure .REG files become associated with the Registry editor. Now, after you’ve transferred the REG file to your handset, just click it from inside File Explorer. Voila: it gets imported into the local Registry.
That’s all – from now on, clicking links in mails, documents etc. should fire up OM and pass the URL.
How you can (and when you must) modify OMInvokeAndPasteScript.mscr ?
The majority of the application logic is, in both the WM5 and WM6 versions, in OMInvokeAndPasteScript.mscr. Therefore, you’ll need to modify it in the following cases:
first, the most important instruction you’ll need to modify is the second row Run("\Windows\jbed.exe", "-run sX_"), where X is either 0 or 1 (I’ve set it to 0 in the WM5 and to 1 in the WM6 script).
As is explained in my earlier Opera Mini & Jbed-tutorial and posts (see for example THIS) , along with other people (see for example THIS), X stands for as how manieth OM was deployed under Jbed.
also note that, if you have to use a pre-WM5 operating system, it’s here that you need to define your TAO / IMB J9 links. Please consult the related section in the MIDlet Bible for more info on how these links need to be created.
Just remember the following: the Run() function requires two parameters, both enclosed in “’s. First is the executable; the second is the passed parameters. The latter string, of course, can (and with both IBM J9 and TAO, will) consist of several parameters.
the script is geared towards Opera Mini 4 users. Under Opera Mini 3 (or previous versions), the initial two SendLeftSoft calls will NOT result in the “Enter address” dialog coming up. With Opera Mini 3, therefore, you will need to change the second SendLeftSoft to SendCR as follows:
#SetClipText(url)
Run("\Windows\jbed.exe", "-run s0_")
Sleep(6000)
SendLeftSoft
Sleep(400)
SendCR
Note that the above code snippet has SetClipText(url) commented out (note the # at the beginning of the row). This is only needed under WM6; under previous operating systems, you MUST NOT comment it out.
finally, you can fine-tune the parameters of Sleep() in the code so that OM is still reliably invoked. With the code above, for example, I let MortScript wait for 6 seconds (6000 milliseconds) before starting to emulating left softkey presses.
Quick explanation for the different behavior under WM6 (only for geeks / hackers / programmers!)
Under WM6, invoking the default Web browser isn’t any more done the same way as under previous operating systems. There, the contents of HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\ Shell\Rai\ : DEFBROWSER\1 tell the system what to invoke. Here, unfortunately, it’s impossible to define additional command-line parameters. Parameters DO get passed (in the background), but you can’t name them. MortScript, however, relies on the latter – that is, named parameters referable under their name, NOT their index.
Under pre-WM6 operating systems, it was easy to name the parameters you passed to programs as can clearly be seen in the WM5-specific Registry import file, which just overwrites the old value of HKEY_CLASSES_ROOT\ http\Shell\Open\ Command:
@="\"\\Program Files\\MortScript\\MortScript.exe\" \"\\Program Files\\MortScript\\OMInvokeAndPasteScript.mscr\" url=\"%1\""
Here, I’ve named the parameter “url”. This is why the first row in the MortScript file is as follows:
SetClipText(url)
This just instructs MortScript to copy the contents of the “var” variable (which, now, comes from the “outside” of the script) to the clipboard so that, later, it can be pasted back to the URL input field.
Feel free to quickly scrutinize the two, WM6- and pre-WM6-specific Registry import files so that you can see this for yourself.
Currently, I don’t know a way of naming parameters under WM6. Of course, when I come up with a solution, I let you all know.
Awesome.
Thanks for this breakthrough.
I shall test it tonight when I get home and report back my success.
UPDATE (11/29/2007): thanks to badbob001 on my blog, now, as opposed to the initial case, WM6 devices (both Pocket PC's and Smartphones) are FULLY supported!!!!!!!
This all means there is no longer a difference between how WM6 and pre-WM6 operating systems behave. You only need to make sure to get the right .MSCR and Registry import files from the already-updated ZIP file, depending on your operating system version. That is, for WM6, get the files from the WM6 subdirectory, for pre-WM6 operating systems, from the WM5 one. And, of course, modify the scripts if Opera Mini isn't deployed as the first app under Jbed, the, by default, supported (and highly recommended) MIDlet manager.
Again: Under WM6, manual link copying to the clipboard is no longer needed and, again, it works 100% on WM6 Smartphones as well!
(note that now that WM6 is fully supported, I haven’t edited the original article; its WM6-related parts are now outdated. Again, WM6 is fully supported now and there's no difference between the usability on pre-WM6 and the WM6 platforms any more.)
Moved to this post, as I noticed that one is for Smartphones, while I am on WM6 Pro.
So as I was saying:
Yes, you are right. I have deleted the string mentioning s0_ all together, and it does work without it. So, what you think.
Basically, here is what I tried:
Code:
If (ProcExists("jbed.exe"))
Run("\Storage Card\Program Files\Jbed\jbed.exe")
sleepmessage(2, "Please Wait...")
Else
Run("\Storage Card\Program Files\Jbed\jbed.exe")
sleepmessage(10, "Please Wait...")
EndIf
SendLeftSoft
Sleep(100)
SendLeftSoft
Sleep(100)
SendEnd
SendHome( "",0,1 )
Sleep(100)
url = substr(url,2)
SetClipText(url)
SendCtrlKey( "V" )
Sleep(100)
SendLeftSoft
What it does with that 10 seconds command is that, it launches Jbed, waits 10 seconds at the menu option (where there is a list of Midelets installed, in my case for now only Opera), and then only launches OM, and again there is no auto address input. So increasing seconds doesn;t give me anything. What can be the problem?
And what about handling of links in apps such as Spb Insight ... I haven't tried clicking links in any other 3rd party app, but perhaps the result will be same, i.e. not launching the OM but going straight to PocketIE.
UPDATE (12/04/2007): Major WM6-related updates have taken place in the meantime.
In the meantime, my blog reader badbob001 has refined the script. Now, if you click a link, you’ll be presented a choice list, where you can select whether to pass the given URL to Internet Explorer Mobile, Opera Mini, just copy to the clipboard or just cancel the operation. This will help you in selecting the right browser if you (still) plan to use IEM (or other native Web browsers like Opera Mobile, Netfront or Minimo).
Cool, eh?
Remember that you don’t need to deploy this script if you don’t need this kind of functionality but always want to be redirected right to Opera Mini. Therefore, I’ve also included the older version of this script in the ZIP file. It’s in the NoBrowserSelectionDialog subfolder. Note that this script has also been updated a bit: it checks for Jbed already running; if it is, then, it doesn’t wait that much. Again, thanks for badbob001 for refining and performance-tuning my initial script.
Note that the usual stuff applies: if the script doesn’t invoke Opera Mini but invokes something else, edit both occurrences of s0 and appropriately change 0 to a greater number.
Finally, note that, these updates & bugfixs being all WM6-related, I haven't edited the old, WM5-related, working MortScript file. If you need some speedup and/or dynamic, runtime selection of the browser you'd like to use, you'll want to copy either of the two new MortScript files - it'll work.
2. Upon HowardForums forum member volwrath’s bug report, I’ve enhanced the Registry import file to support invoking Opera Mini from all applications, not only Messaging and Notes. I wouldn't have thought WM6 is so half-baked (that is, half of the apps still depend on the pre-WM6 (that is, the HKCR/http/Open/Command) way of invocation). That is, the WM6 Registry import script has also been enhanced (basically, I've just added the contents of the old WM5-related Registry import file to it), not only the MortScript file.
Note that reading local files will still default to the system-level browser as I haven’t redefined the default application for opening .htm(l) files. That is, by default, Internet Explorer Mobile will open these.
Again and again, it can’t be stressed enough how much these hacks enhance the usability of Opera Mini under Windows Mobile! I really recommend giving Opera Mini a try – you certainly won’t regret it!
Gr8 ... tnx to all mind tanks and coders .... great, simply great. Hope with this, and my mobile, HTC P3300, being hard reseted, and OM being the first JApplet installed on main memory I will have no further probs
BTW, just wanted to know. Once I have .reg file registered in registry, and suppose I want to return back to factory settings, what will be the simplest procedure.
EazyVG said:
Gr8 ... tnx to all mind tanks and coders .... great, simply great. Hope with this, and my mobile, HTC P3300, being hard reseted, and OM being the first JApplet installed on main memory I will have no further probs
BTW, just wanted to know. Once I have .reg file registered in registry, and suppose I want to return back to factory settings, what will be the simplest procedure.
Click to expand...
Click to collapse
Just export the two reg keys as they were BEFORE your importing the regifile.
Should you no longer have them, let me know and I create it for you when I have some time.
Gr8 Breakthrough
Thanks Menneisyys and badbob001 ..... you the king of the hill.
On my HTC P3300 running WM6, Claudyfs Jbed 1.2, now all is working exceptionally well. Now with the updated script and reg tweak even the links embedded in 3rd party apps (such as the one I mentioned, Spb Insight) the OM get's launched and the browser shows the web site without any delays. The only thing I changed was the Sleep string from 6 to 4.
I can't thank you guys enough ... definitely MAJOR BREAKTHROUGH
Please Help!
I have done everything as mentioned. It comes up with the options - I select OM - It loads OM - that's it!
Nothing loads but when I go to Pocket Word and paste the info, it is in the clipboard.
What do I need to do to get the info from the clipboard into OM?
Otherwise, great app!
cbus said:
I have done everything as mentioned. It comes up with the options - I select OM - It loads OM - that's it!
Nothing loads but when I go to Pocket Word and paste the info, it is in the clipboard.
What do I need to do to get the info from the clipboard into OM?
Otherwise, great app!
Click to expand...
Click to collapse
Also - If I have OM running then click on link, it opens up ie and exits OM and IE?????
Any thoughts?
Ok - I read thru the middle of your info. I am running wm6 pro on sprint touch.
I put the # in front of setcliptext(url)
and put in SendCR instead of the second SendLeftSoft
What happens is I get OM to load and it opens a url but it is not the url I selected. It is from a previous clipboard item. I will continue to play with it.
any thoughts would be appreciated!
Update!
Ok - Got it working!
For those of you having similar issues, here is what I did.
I am running OM 4.0.9751
I took the # symbol off the front and that fixed the clipboard issue.
I did however leave the second SendCr and that did the trick.
So it looks like this:
SendLeftSoft
Sleep100
SendCR
Sleep100
I was under the impression that with OM 4.0 that I didn't need the sendcr command.
Please let me know if this is correct?
Still Exiting
So everything works fine - the only problem is that if OM is running in background, then it will go to OM then to IE then it says in ie "shut down Opera Mini?" Then it shuts down.
Any ideas?
made a fix for the exiting problem
I changed the mortscript to the following and that fixed the exiting issue however I am sure there is an easier way.
if (substr(url,1,1) eq " ")
url = substr(url,2)
EndIf
list[1] = "Open in Opera Mini"
list[2] = "Open in Pocket IE"
list[3] = "Copy to clipboard"
list[4] = "Cancel"
Choice("With this link...", url, list)
Case(1)
Call OpenOM
Case(2)
Run("\Windows\iexplore.exe", url)
Case(3)
SetClipText(url)
Case(0,4)
Exit
EndChoice
Sub OpenOM
If (ProcExists("jbed.exe"))
Run("\Windows\jbed.exe", "-run s2_")
sleep(2000)
SendRightSoft
sleep(2000)
Else
Run("\Windows\jbed.exe", "-run s2_")
sleep(6000)
EndIf
SendLeftSoft
Sleep(100)
SendCR
Sleep(100)
SetClipText(url)
SendEnd
SendHome("",0,1 )
Sleep(100)
SendCtrlKey("V")
Sleep(100)
SendLeftSoft
EndSub
Hope this helps!
Please let me know if there is an easier way.
UPDATE (12/12/2007): upon the problem reports of several Smartphone users (see the posts for example HERE), I’ve released a slightly modified version of the script that, instead of pasting, uses keyboard emulation. This makes it possible to use the script on some Smartphones that are incompatible with pasting.
The script is available HERE. Remember to remove the SP.2 extension before deploying it. Note that, again, it's ONLY meant for Smartphone users that previous script versions didn't work with!!!
Note that while it works on for example the I3 Beta of WM6 of the Samsung BJ, it doesn’t do the same on the (original) WM5 version of the same device or the HTC Vox (s710). It seems it’s impossible to support these devices with the current MortScript version. I'll also try to reimplement the script in nScriptm (another, less widely used scripting language / interpreter) - hope it is able to paste / send characters to these, still incompatible MS Smartphone models.
CABs Ready!!!
I made 3 cabs for easy installation of this hack.
What it does:1. Installs MortScript (Default to Internal Memory, because of links and shortcuts)
2. Installs script to Windows dir and imports Reg values (to be independant of MortScript folder)
3. Creates a shortcut for OperaMini in the programs folder!
These CABs are for ARM processors and for Pocket PC only - not smartphones.
All you need to do is install.
Have fun.
P.S: I need a confirmation that the WM5 cab works.
shlomki said:
I made 3 cabs for easy installation of this hack.
What it does:1. Installs MortScript (Default to Internal Memory, because of links and shortcuts)
2. Installs script to Windows dir and imports Reg values (to be independant of MortScript folder)
3. Creates a shortcut for OperaMini in the programs folder!
These CABs are for ARM processors and for Pocket PC only - not smartphones.
All you need to do is install.
Have fun.
P.S: I need a confirmation that the WM5 cab works.
Click to expand...
Click to collapse
You're great; I'll frontpage this!
UPDATE (12/15/2007): XDA-Devs forum member shlomki has just released the different hacks in CAB format so that they’re very easy to install. They’re available HERE. Comments are welcome. (Note that, due to lack of time, I haven’t checked them.)
Awesome - tested the WM6 without Selection Dialog and it works like a charm! Thanks for this breakthrough indeed!!!