Related
I have a little project in mind, but would like some input from the pros to cut research time:
Is it possible to "wrap" a Today plugin dll with another, providing a "pass through" for operations (such as screen taps, etc)?
What I'm trying to accomplish is this: Add selectability and other one-handed d-pad operation to an older plugin that is not selectable.
What do you think?
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Rudegar said:
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Click to expand...
Click to collapse
This is specific to a single plugin - it would only keep track of one.
Perhaps plan B would be easier - a plugin that manipulates another plugin. Such that it would "appear" the older plugin was selected, etc. I guess I'd better go study some more...
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
levenum said:
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
Click to expand...
Click to collapse
Hey, thanks for the response! I've set the Selectability registry item for the older plugin, and it's ignoring it - that's what started me on this little project.
I'm a software developer by trade, but not with C++, so I don't want to waste people's time here asking a lot of dumb questions. If you could point me in the right direction on a couple of things, I'll go off and learn:
1. If all I have is a dll and nothing else (no .defs, etc), can I determine all of the functions it exports (other than InitCustomItem)?
2. Process check: My custom plugin's InitCustomItem would call old-plugin's InitCustomItem, snagging old-plug's hwnd. New-plugin would then initialize it's own window - transparent(?) and pass that hwnd back to windows. Also, my custom plugin would pass all messages to old-plugin, etc. Theoretically, old-plug would look and operate like normal?
If this is already written, just sent me the code!
Well I am afraid it will be difficult to do all this without C++. As far as WM based devices are concerned you need to use something that translates in to native code to create system components like the plugins son ,no .NET languages, and embedded VB doesn't do well on anything never that WM 2003 (not even SE), plus I am not sure if you can make DLLs with it at all.
To your questions:
1) There is a tool which comes with VS 6 called Dependency Walker. It shows you what functions a given DLL exports, what it imports from other DLLs and what DLLs it is link to. Woks on EXE files as well.
If you can't get that, download a demo of IDA 5. It's the most powerful disassembler for WM devices out there.
2) Not sure, I never tried anything like that. The thing is, the system resizes the plugins, on initialization (it controls height) and when screen rotation changes so if you pass back HWND for a window other than the one visible, it might cause some problems.
I think what you should do is learn about subclassing. It's when you replace the procedure of an existing window with your own (just replace the function, not create new window). You then get all the messages for that window, you can do what you want and call the original function when you done.
By the way, if you want to learn about writing plugins there is an article with code samples on this site: www.pocketpcdn.com and a lot of other interesting stuff.
Good luck.
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
levenum said:
Well I am afraid it will be difficult to do all this without C++.
Click to expand...
Click to collapse
I should have been more clear - I am using C++, I'm just have to learn how to program with it first!
vijay555 said:
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
Click to expand...
Click to collapse
I don't have the old-plugin source code. My little project is to add some sort of d-pad operation to the WeatherPanel plugin, which you're probably familiar with.
Progress: I've written and deployed my first little plugin - based on the source code samples available in the internet.
Next step: In my InitializeCustomItem, I thought I'd try to call WeatherPanel's InitializeCustomItem (instead of creating my own window). Thing is, I don't yet know how to properly link the WeatherPanel dll to my project. As expected, it only exports two functions: InitializeCustomItem and CustomItemOptionsDlgProc (I used dumpbin.exe)
I'll keep plugging away - any input would be appreciated.
Thanks for your help!
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
levenum said:
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
Click to expand...
Click to collapse
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
storyr said:
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
Click to expand...
Click to collapse
Update: So far, so good. As it turns out, EnumChildWindows doesn't work on the PPC, so I used GetWindow to find the plugin's handle. I can successfully send messages to it and initiate various actions.
Question: I'd like to visually indicate (on the old-plugin) what's being clicked (such as drawing a box around it). Is it possible to draw things outside of my own window?
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
levenum said:
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
Click to expand...
Click to collapse
I tried that exact thing (GetDC) and drew a rectangle in it, but it didn't do anything. I realized the reason was the WM_Paint event wasn't firing on old-plugin, and when it did, my stuff was erased (just like you said).
Next idea - open my own dialog window than overlays old-plug. The entire window needs to be transparent - except for the visual indicators that I position where I want. When the user ok's, I close the window and send the click to old-plugin...
Thanks again for keeping tabs on my progress..
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
levenum said:
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
Click to expand...
Click to collapse
No offence taken. I thought of that, but I figured this would be a good way to cut my teeth a little. Once I complete this little project, I may pursue that route...
Question: Do you have a favorite forum (or forums) besides this site that you use for your research/programming questions?
This is my favorite forum
But here are couple more sites I found very valuable:
www.pocketpcdn.com - They have tips and tricks with code examples arranged in categories like how to make MFC dialogs not full screen or the one I used in LVMTime to put the clock back on the taskbar.
www.codeproject.com - It's not specific to WM development but has tons of interesting stuff including entire sources.
You should also check out www.buzdev.net If you're not familiar with the great work of buzz_lightyear you should see some of the stuff he did for this forum like grab_it - the invisible ROM dumper.
OT
Just a quick OT question:
If I would move some of the plugin-dll's from \Windows to \Storage Card, would it be enough to change the adress within the corresponding item in the registry entry HKLM/Software/Microsoft/Today/Items ?
Of course I'm not talking about plugins like tasks a.s.o but rather third party plugins
Cheers
hrb
It won't work.
The problem is that the SD card is mounted too late so if you put the plugins on it they will not be loaded when device boots up.
You can move them to the extended ROM this way or to a folder other than windows but there is no way to move start-up stuff to SD.
Thanks for the help with this "little" project. After many hours, the product is out for beta testing. When it's released, I'll post more info...
Finished!
It's finished. The app is called WP-Pilot and it provides one-handed operation of WeatherPanel. If anyone's interested, it can be found here. Here's how it ended up:
There's a plugin (WP-PilotPlugin.dll) with an options dialog, and an executable (WP-Pilot.exe).
When the plugin gets selected, it looks for Weatherpanel. If it finds it, it fires off WP-Pilot.exe
WP-Pilot.exe opens. It does this stuff:
Look for WeatherPanel, and get it's screen coordinates.
Read the registry and determine which layout file WeatherPanel is using.
Open the layout file and read it: Record the coordinates of each "clickable" item found. This was a real PITA because of Unicode.
Sort the coordinates for left-to-right, top-to-bottom order.
Select the first coordinate and position a tiny window (10x10) at that x-y position.
Draw a "pointer" in the window (the type and color depends on what's selected in the options).
Show the window and process input:
[*]Left/right pressed - selected the next/previous coordinate and move the window to that location.
[*]Up/down pressed - close WP-Pilot and tell the plugin we're done.
[*]Center button pushed:
[*]Send a mouse click to the WeatherPanel plugin at the coordinates
[*]Close WP-Pilot and tell the plugin we're done.
Thanks again for your help!
I want to remove the label "Owner:" that appears before owner information on the Today Screen. It's just taking up space and keeps me from being able to enter Name and Phone Number in the Name field and have it fit on one line. I've tried to find a registry entry or setting that may affect the label, but I suspect it's coded and, therefore, a little beyond my skills. Can anyone either tell me how to change it or perhaps create a small script to remove the label. Thanks!
It's not possible (certainly not by script). Even if whatever DLL is responsible for displaying owner details (I am fairly sure it is not a stand alone regular plugin) could be hacked to remove the string resource it would still not align the writing to the left.
My suggestion is to google for alternatives (there are even free ones) for the "owner" plugin.
ownerinfoX
Try this.
Thanks for both replies
ownerinfoX is a nice little app. Perfect for what I needed.
Thanks again.
I could never get OwnerInfoX to work on my PPC6700. Is it WM5 compatible?
Relatively new to this forum, but I've written a little app for WM6 and I'm trying to get "selected icon" functionality working.
I've been looking around and the general consensus on .lnk syntax is something like the following...
xx#<path>[options]
...where xx is the number of characters to consider as the command line after the pound sign.
If that's the case, what does this format for the calendar shortcut on my device mean?
21#:MSCALENDAR?:calendarapp
The 21 doesn't seem to refer to anything, as there are 24 characters after the pound. And what is ":MSCALENDAR?:" ? Is that some sort of environment variable? If so, where is it defined?
I did finally figure out that "calendarapp" refers to HKCR\calendarapp, where both the "DefaultIcon" and "SelectIcon" keys are defined, but there's no reference to the calendar app's path, so that must be defined by :MSCALENDAR?: somehow.
Thanks for any pointers!
wdbdesign said:
Relatively new to this forum, but I've written a little app for WM6 and I'm trying to get "selected icon" functionality working.
I've been looking around and the general consensus on .lnk syntax is something like the following...
xx#<path>[options]
...where xx is the number of characters to consider as the command line after the pound sign.
If that's the case, what does this format for the calendar shortcut on my device mean?
21#:MSCALENDAR?:calendarapp
The 21 doesn't seem to refer to anything, as there are 24 characters after the pound. And what is ":MSCALENDAR?:" ? Is that some sort of environment variable? If so, where is it defined?
I did finally figure out that "calendarapp" refers to HKCR\calendarapp, where both the "DefaultIcon" and "SelectIcon" keys are defined, but there's no reference to the calendar app's path, so that must be defined by :MSCALENDAR?: somehow.
Thanks for any pointers!
Click to expand...
Click to collapse
:MSCALENDAR:, as well as :MSCONTACTS: and many others are aliases!
SKTools can help manage those and even define new ones!
Ah...thanks for that! Armed with that information I was able to discover that those are stored in HKLM/Software/Microsoft/Shell/Rai. Exactly what I was looking for!
Hello folks,
is it somehow possible to edit a number from call history (or maybe even a contact) before calling / dialling (eg. change the suffix) with HTC HD2 (or Windows mobile in general)???
Even my stoneage Nokias could do this... Very helpful feature if trying to call different numbers (suffixes) in one company or after mistyping a number and noticing it after hitting the "Call" button (you could then take the number from history and correct the typo instead of re-entering the whole number).
I found no way with my top notch HD2 to perform this simple task. Any tricks at hand? Any (simple, probably free) apps that may help?
(Is there anyone at all who shares my need? )
Thanks for your help!
surprisingly enough, and ridiculously enough, as far as I've tried until now, that's not possible, unless you keep the number in your head and type it in the dialer, or copy/paste the original number inside a fake contact, and edit it there in order to call that contact later.
Nothing even by far anything similar to copy/paste is possible in the dialer, not even with quickmenu
Thanks ephestione for your sympathy, pity that there seems to be no solution!
Creating a dummy contact would be a kind of workaround but no simplification. Re-entering the number would then be quicker and less complicated.
Another strange flaw of the "Phone dialer screen" I just noticed is that you can not even really edit the number you just typed in at any position (by placing a cursor). You really have to backspace-delete the whole number until the typo and re-enter it from that position on! How "smart" is that?
(For my not-so-smart old SE k800i this was one of the easiest tasks and I never expected this to be a problem...)
Certainly this problem is caused by the different concepts of "touch" or "keypad" interfaces. With a keypad selecting an item (eg. a number in a list) and then doing something with it (eg. dial or select a "use number functionality" via menu) are separate things, while in touch interfaces selecting and executing often (mostly) is one.
But in many situations this is inappropriate at least. The distinction between a single tap to select and a double-tap to execute (like known from the mouse) seems to be the better approach when there are several different things you might want to do with an Item (like here)!
Anyway, is there no one else missing a "edit number before redial/dial contact" functionality?
Anyone else with a solution (app or easy workaround) at hand?
If there is a certain demand I would even try to write my own app! Unfortunately I have absolutely no experience in programming for WinMo and accessing functions there...
Could someone suggest a good introduction to WinMo-Programming? (Or maybe anyone of the experienced developers here is keen on doing the coding? )
My idea:
App functionality:
Possibility to edit phone number selected (tapped) from call history before redialling starts
Possibility to edit phone number selected (tapped) from contact before dialling starts
App features:
Suppress dialling after selecting (single tap) a number from call history or contact (or anywhere else), instead paste the number to the "number field/row" in the "Phone dialer screen". The number could then be edited using the "backspace method".
A number could then be dialled as usual by double-tapping the number. (Tap/double-tap functionality may be switched)
>>> At least great for suffix editing. Looks quite easy to code to my unexpirienced eye...
On the "Details" tab for a contact (or a number from history) provide a button to the right of every "Call ..." entry (just like the "select number" button for the "send message" entry) with a "use number functionality" wich just pastes the number to the "number field/row".
>>> Surely needs accessing HTC Sense. Looks challenging.
Maybe also provide such a button in call (history) lists...
>>> There already are two buttons in these lists...
Make "number field/row" fully editable by providing a freely placeable cursor.
>>> No idea how to do this. May need accessing HTC Sense? Looks very complicated.
Feedback welcome!
It is simply SICK that this functionality does not exist by default. No wonder the head of win mo just got sacked! /P
I desperately need this editing function as I travel overseas a lot and ther are a lot of IP dialing facilities where one just has to enter a specific number before the main phone number, eg if in Singapore and using M1 sim card one just has to dial 021 + country code + tel number. (021 is not an international dialing code, its just a cheaper way to make international calls)
I was able to do this in my 10 year old phone but ever since I've moved to WiMo such a basic feature is missing.
I am missing it also very much!!! Tried to use the note function but it did not work ... It would be really great if someone might be able to provide a cap-file to improve this great mistake of wm!! Or anything else - any ideas are appreciated!!!
blaster88 said:
I am missing it also very much!!! Tried to use the note function but it did not work ... It would be really great if someone might be able to provide a cap-file to improve this great mistake of wm!! Or anything else - any ideas are appreciated!!!
Click to expand...
Click to collapse
The only thing I can think of, is a phone suite software from Inesoft.
http://www.inesoft.com/eng/index.php?in=phone.html
New version 6 has been released with updates.
I have attached some info in their user manual.
Apparently, it seems they have addressed this issue.
I have read a number of forums and people with HD2, liked this software.
Hope this helps.
ps. I haven't tried it, as I hadn't had a need. But I think I will give it a go, as my needs for international dialing are picking up. I have SPB phone suite, and it is almost useless.......so give that phone suite a miss. I also had phone alarm and it won't solve the problem either.
Oh, and I forgot their was PhonEx. Ver2.2 is the current one.
http://www.iconsoft.com/?language=en&menu=62e094db10fc83b1
They also have a feature to edit and add, special format numbers, which can be used when dialing intl numbers etc....
I have attached their info as well.
You would have to do some research and see which one would suit your needs better, and your device, between PhonEx and Inesoft.
Good luck.
Edit: I think between the two, PhonEx has a better dialer.............Just my two cents.......but check it out for yourselves.
just had a quick play with this, with the aim of taking a number from call history, editing it and dialing the edited number.
here's how.
from phone screen, choose number in the list by tapping the icon on the right, which calls up the history sub tab for just that number, (or the details page if it's a known contact), slide to the messaging sub tab and press the hardware send key, this loads the number into the dial screen, but doesn't dial it. now choose menu, save to notes, edit the number, select it, press and hold, choose copy, jump back to phone screen, hit menu and paste is now an option.
voila, new number just waiting for you to hit dial.
samsamuel said:
just had a quick play with this[...]
Click to expand...
Click to collapse
the whole procedure sounds like the neverending story, as it would require more time than to memorize the new number and type it in
Anyway, what I have to thank you for, is pointing me to the fact that there is indeed a "Paste" item in the menu! I don't know how I overlooked that
So well, regarding my need, which is not actually editing the number before dialing but rather copy the number off a calendar entry, you just saved my day thank you
heh, glad it helped, and as usual, teh explanation takes 10 x longer to read than the process takes to do, its a 10 second thing once you know it. The downside is you end up with a pile of notes you dont want.
Not quite as simple as I would have liked but as long as it got the job done, it'd be fine. Except.... Arrrgh!
Everything is OK up until the number is displayed in the dialler. I then hit the Menu softbutton and select 'Save to Notes'.
This opens up a note, BUT (and its a big but!) the number is not pasted into the note.
If I then select Menu from Notes, the Paste opton is greyed out. If not then it just pastes the last thing I copied, which is not the number!
Help!
well it used to work! mine doesn't now either, i recently started using parts from the 3.14 rom, something must have changed.
what rom you on?
Whoops! Appologies for the late reply.
I'm on ROM ver 1.66.405.2 (76641) WWE
OS ver 5.2.21869 (21869.5.0.82)
Manilla ver 2.5.19211619.0
Hope this helps.
Edit before dialing...
Good news!
This software can help....
I started using this from Windows Mobile 6.0, then 6.1 and now 6.5.
I am using it in HTC HD2 before and after new Rom 3.14.
It works perfectly. However, you need to use traditional microsoft contact screen. You need to switch from HTC sense contact to traditional microsoft contact. It is very easy. You can also preset some prefix codes as shortcut.
Good Luck!
The software LoneTear PhoneHelper 1.2-Edit Before Call or SMS
This is quite old software but it works perfectly in HTC HD2 running WinMo 6.5.
This is the link:
http://www.lonetear.com/PhoneHelper/default.htm
Rebranded to WP8 Registry Tools from Lumia Registry Modifier
This is a basic registry viewer/editor demonstration using Registry dlls pulled from Nokia xaps within the latest FFUs.
First, a few things to note.
1) This only retrieves values from HKEY_LOCAL_MACHINE
2) It CAN read DWORD values now, but can't write. (Hell you probably won't be able to write ANYWHERE, but the code is there)
Instructions are quite simple.
To Read Values:
1) Put the Registry key in the first box (ex. SOFTWARE\Classes\MIME\Database\Codepage\1254
2) Put the Registry Value in the second box (ex. 1254)
3) Press Get Value.
To Set Values:
1) Put the Registry key in the first box (ex. SOFTWARE\Classes\MIME\Database\Codepage\1254
2) Put the Registry Value in the second box (ex. 1254)
3) Put the new registry value result in the Set Value box.
4) Press Set Value.
This is very very basic, but I wanted to just show off something using what Nokia has provided us.
We can't write dword values unfortunately so hopes of using this to change the MaxUnsignedApp value are lost. This MAY be possible with @GoodDayToDie 's WP8NativeAccess library, but with this it isn't.
In case everyone wondered what that key is... SOFTWARE\Microsoft\DeviceReg\Install
Side load away
Hmm... I get Access Denied in my library on most keys that I've tried to write. If you can write the codepage, that's interesting (generally speaking, HKLM has stronger protections). I'll double-check whether I can write there myself. If not, but you can, then we have an elevated privilege attack vector...
Also, we should see whether the app runs on non-Nokia devices. I suspect that it will, if it works the way I think it does, but in that case it also won't have much in the way of permissions.
Getting DWORDs to work is a good project, I'm sure it's possible (works fine in NativeAccess, incidentally).
EDIT: Any chance you could include the source?
snickler said:
This is a basic registry viewer/editor demonstration using Nokia's Native Registry dll pulled from one of their apps.
First, a few things to note.
1) This only retrieves values from HKEY_LOCAL_MACHINE
2) DWord values aren't supported.
Instructions are quite simple.
To Read Values:
1) Put the Registry key in the first box (ex. SOFTWARE\Classes\MIME\Database\Codepage\1254
2) Put the Registry Value in the second box (ex. 1254)
3) Press Get Value.
To Set Values:
1) Put the Registry key in the first box (ex. SOFTWARE\Classes\MIME\Database\Codepage\1254
2) Put the Registry Value in the second box (ex. 1254)
3) Put the new registry value result in the Set Value box.
4) Press Set Value.
This is very very basic, but I wanted to just show off something using what Nokia has provided us.
This doesn't seem to work with dword values unfortunately so hopes of using this to change the MaxUnsignedApp value are lost. This MAY be possible with @GoodDayToDie 's WP8NativeAccess library, but with this it isn't.
In case everyone wondered what that key is... SOFTWARE\Microsoft\DeviceReg\Install
Side load away
Click to expand...
Click to collapse
atleast its a start.
GoodDayToDie said:
Hmm... I get Access Denied in my library on most keys that I've tried to write. If you can write the codepage, that's interesting (generally speaking, HKLM has stronger protections). I'll double-check whether I can write there myself. If not, but you can, then we have an elevated privilege attack vector...
Also, we should see whether the app runs on non-Nokia devices. I suspect that it will, if it works the way I think it does, but in that case it also won't have much in the way of permissions.
Getting DWORDs to work is a good project, I'm sure it's possible (works fine in NativeAccess, incidentally).
EDIT: Any chance you could include the source?
Click to expand...
Click to collapse
ah yes, sorry about that. Let me load up my laptop
EDIT: Source added.
Hi I found the Registry item
(File path : <ffu>\Windows\Packages\RegistryFiles\SOFTWARE.REG)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\KindMap
where we can set extensions and their types.so is it possible to add a new extension so that it will also be supported and visible in sdcard ?
vivekkalady said:
Hi I found the Registry item
(File path : <ffu>\Windows\Packages\RegistryFiles\SOFTWARE.REG)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\KindMap
where we can set extensions and their types.so is it possible to add a new extension so that it will also be supported and visible in sdcard ?
Click to expand...
Click to collapse
It doesn't support creating new key values, only modifying existing ones. If the data is within one key value and it's able to be read, then it should be able to have things added to it.
EDIT: From what I've seen, what you're trying to do won't be possible with this. Each extension has a different key value.
We may need to start an "interesting registry values" thread here, similar to the one for WP7. Of course, it'll be more interesting if we can actually change any of them.
Oh, and the app works on my ATIV S, just by the way. Need to find some interesting paths to test it on, though.
EDIT: Have you been able to write to *any* values using this? It fails for me every time, but I haven't tried that many yet.
GoodDayToDie said:
We may need to start an "interesting registry values" thread here, similar to the one for WP7. Of course, it'll be more interesting if we can actually change any of them.
Oh, and the app works on my ATIV S, just by the way. Need to find some interesting paths to test it on, though.
EDIT: Have you been able to write to *any* values using this? It fails for me every time, but I haven't tried that many yet.
Click to expand...
Click to collapse
it has failed for me also. The only values I could write to were the ones that corresponded to Nokia. I'll look through the code again and make another update. I'm going to also rebrand it since it works for non Lumia phones.
Interesting about the Nokia paths working. That could be some characteristic of the DLL you use having better permissions or something specific to OEM stuff, but I actually suspect it's just that Nokia didn't bother to lock down the ACLs on their parts of the registry. You can easily adapt the app to my NativeRegistry class to test this, if you want.
Hmm that's a good idea. I just rebranded it to WP8 Registry Modifier. I'll add in your NativeRegistry class to work along with the RegistryRT class to see what comes about.
DWORD support
For DWORD support, take a look at the Nokia.SilentInstaller.Runtime.wim... The "CSilentInstallerRuntime" class contains multiple methods to interact with the registry including:
CreateKey
GetRegDWORDValue
GetRegSZValue
GetRegSZValueL
IsRegistryDWORDValueExists
IsRegistryKeyExists
IsRegistryREGSZValueExists
SetRegDWORDValue
SetRegSZValue
A bit off topic, I found a way to launch any URI... Literally, ANY URI (app:// http:// or anything). I can launch any application (using the GUID - so it must be a registered application but doesn't have to be one that you see in your programs list) and go to a specific page within that application. I can also pass any kind of query string that could unlock some hidden features in an application (such as the Extras+Info application - I can launch it using any dial string even though my ROM has that particular dial string disabled). I do so by launching a Toast message which allows me specify a launch uri and once it pops up, I click it. If anyone's interested, I can post a code sample for that...
@GoodDayToDie I'm able to read DWORDs with your NativeRegistry framework. I haven't been able to write though (I've only looked at the MaxUnsignedApp reg value).
What I think I'm going to do is possibly scrap the RegistryRT framework and just use yours. I can then make an even more robust app.
cpuguy said:
For DWORD support, take a look at the Nokia.SilentInstaller.Runtime.wim... The "CSilentInstallerRuntime" class contains multiple methods to interact with the registry including:
CreateKey
GetRegDWORDValue
GetRegSZValue
GetRegSZValueL
IsRegistryDWORDValueExists
IsRegistryKeyExists
IsRegistryREGSZValueExists
SetRegDWORDValue
SetRegSZValue
A bit off topic, I found a way to launch any URI... Literally, ANY URI (app:// http:// or anything). I can launch any application (using the GUID - so it must be a registered application but doesn't have to be one that you see in your programs list) and go to a specific page within that application. I can also pass any kind of query string that could unlock some hidden features in an application (such as the Extras+Info application - I can launch it using any dial string even though my ROM has that particular dial string disabled). I do so by launching a Toast message which allows me specify a launch uri and once it pops up, I click it. If anyone's interested, I can post a code sample for that...
Click to expand...
Click to collapse
I was actually looking at the SilentInstaller not long ago. I got sidetracked by the fact that I could use the NativeRegistry read DWORD values. I'll check that out and upload a new build in a few
GoodDayToDie said:
We may need to start an "interesting registry values" thread here, similar to the one for WP7. Of course, it'll be more interesting if we can actually change any of them..
Click to expand...
Click to collapse
I can write one up later. I have several registry keys that I'd like to bring attention to.
NOTE: I don't see anything editable yet, at least I can read it to compare it to the files in the ffu.
Launching a URI should be possible more directly than that, using ShellExecute, or similar, but that way is cool (and doesn't require importing unofficial native functionality).
Just a word of warning: NativeRegistry is under heavy modification. I hope to have the next Alpha release done soon, which brings a ton of changes, but in the meantime you might want to follow the changes on CodePlex; while I test every build that I push, I don't always publish the binaries.
There will be two ways to use the registry through NativeAccess soon: one is to use fairly thin wrappers around the native functions (that's mostly what's implemented now, but it will be expanded to include key and value enumeration, key creation, etc.), and the other is to use a class more akin to a .NET RegistryKey class, offering the ability to interact in a more object-oriented manner (where the object itself represents an open key).
Something I did notice when I tried to compile the NativeRegistry source (I just ended up using the binary you had for my testing) is that it kept blowing up on the include for WinReg.h. I don't have that anywhere. Am I missing something?
snickler said:
Something I did notice when I tried to compile the NativeRegistry source (I just ended up using the binary you had for my testing) is that it kept blowing up on the include for WinReg.h. I don't have that anywhere. Am I missing something?
Click to expand...
Click to collapse
I'm not sure how GoodDayToDie did it himself (probably same approach I take it) but I compiled it using the "WinReg.h" from the Windows 8 SDK and removing the desktop-only compiler "if" instruction (lines 49 and 1446). And like he mentioned, you also have to create the KERNALBASE.LIB with the required registry export functions for the linker.
cpuguy said:
I'm not sure how GoodDayToDie did it himself (probably same approach I take it) but I compiled it using the "WinReg.h" from the Windows 8 SDK and removing the desktop-only compiler "if" instruction (lines 49 and 1446). And like he mentioned, you also have to create the KERNALBASE.LIB with the required registry export functions for the linker.
Click to expand...
Click to collapse
Ah ok, thanks!
cpuguy said:
A bit off topic, I found a way to launch any URI... Literally, ANY URI (app:// http:// or anything). I can launch any application (using the GUID - so it must be a registered application but doesn't have to be one that you see in your programs list) and go to a specific page within that application. I can also pass any kind of query string that could unlock some hidden features in an application (such as the Extras+Info application - I can launch it using any dial string even though my ROM has that particular dial string disabled). I do so by launching a Toast message which allows me specify a launch uri and once it pops up, I click it. If anyone's interested, I can post a code sample for that...
Click to expand...
Click to collapse
Yes, please post your code and give yourself your own thread (at least keep it here in development ). There are a lot of underlying dialer codes that Nokia disabled when flashing the 928s. Also this could mean we could have a custom app launcher, if you wanted to customize it that way. Most of the work we have done on WP8 has occurred in the past few months; we are finally getting so close to the first InteropUnlock for Nokia/WP8.
Sent from my RM-860 (Lumia 928) using the OFFICIAL Tapatalk app.
I'm trying to figure out the correct method prototype (since this is a method that appears to be WinPhone only and isn't part of the SDK so, no details on it whatsoever)... I stumbled upon this toast functionality in "NokiaFrameworkOBAWinPRT.dll" under the "DevPropHelper" class. The method to call is "InvokeToast". This method ends up calling "Shell_PostMessageToast" in "ShellChromeAPI.dll" (this is what I'm trying to invoke directly without going through the Nokia dll).
Add a reference in your project to "NokiaFrameworkOBAWinPRT.winmd" (you can find this in newer versions of the Extras+Info app)
Add the necessary <InProcessServer> tag (to allow the "NokiaFrameworkOBAWinPRT.DevPropHelper" class) in the <ActivatableClasses> section of you WMAppManifest.xml file
In the code... Create an instance of "NokiaFrameworkOBAWinPRT.DevPropHelper"
In the code... Call the "InvokeToast" method (of the previously created object) passing it:
Application GUID (can be your local app's GUID - doesn't seem to matter)
URI to launch in string format
Toast title (can be anything)
Toast content(can be anything)
When the Toast notification pops up, click on it and that's it.