Free Common Dialog available - Windows Mobile Development and Hacking General

My experiences last year with building an open file dialog into GSMbeam made me want to have a more reusable solution. So I present my common file dialog here for any one to use. It is a open file dialog and a save file dialog. You just need to get the base class from my site and have a look at the example code to use it. It is very easy to use if you already know how to dynamically load a dll at run time. The dll exports 3 functions. One instantiates an object of the base class, one destroys it. Very easy.
The dialog is a big improvement on my previous one. It has search capabilities and it better adjusts to screen orientation ( I can't test for vga devices sorry, but it should work). It lets the user interact with the file system and returns a full path of their desired file to open. for saving you can suggest a file name (and path) and the user can just accept it or choose another. The save dialog then returns their desired path. The starting directory can be specified in both modes. The art is nice looking and intuitive.
I provide a small app for those who can't be bothered to code it but just want to have a look. All it dose is load the dll and demonstrate its functionality.

Lovely work!
V

Hey dude it sounds great. Unfortunately, the link is down, so it doesn't look great yet
Anyone has a copy ?

yea right man
the link is dead....pls be informed if there is new link...Alive

Related

name garbaling in dll

I am using some functions in a dll but the only way I can get the name of the function to remain as I name it is to make it extern "c". If I do not do this then I have to copy the name from directly inside the dll and put the garbled text in my code, ed "someFunctionName" ends up "[email protected]@YAHXZ". It seems that every example I ever see dose not have this problem. Is there some setting I do not know about to force the linker to use the names I type without using a def file?
It was my understanding that this has something to do with C++ convention and cannot be changed, though I could be wrong on this point and if so, would also like to earn the answer.
Mean while if you are using functions from your DLL in your own code you can link to it "implicitly" (am I confusing the terms here?) by simply linking in the lib file compiler creates for the DLL and using the regular function names without all the garbage.
I think that what I am seeing is microsoft ("decoration") not from c++. I think the c++ name mangaling follows some rules that let it show the size of data being passed as arguments.
I do not want to link to it and use .lib etc because I do not want my main project to be entangled with the dll. I am trying to make a pluggin so it will be dynamically loaded with loadlibrary and getprocaddress. I am a bit new to this but it seems to work ok, I was just not sure how to use the def file properly. For example what are the rools regarding the order of names in the def as compared to the header file and what about variables, are they exported or do I have to have a function that returns a pointer to them.
Well some of MS help I encountered states that DEF files are obsolete, or at least MS is trying to make them so.
I didn't get deep in to the DLL rules my self but from what I understand it is sufficient to declare a function as _dllexport for it to be seen from the outside. If you want to specific ordinals (like in the plug-in case) that's another matter.
Variables can be exported and so are classes. I never tried using it, but the "hello world" example of a DLL that eVC 4 builds exports a function a class and a variable and does not use DEF file.
and after building that automatically generated code I get a dll with decorated function names (I view the dll in notepad to check). At first I could not figure out what was going on but after I put the decorated names into getprossaddres it works.

"Wrap" a Today plugin

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!

GSlide 0.3 - Now with MortSupport :)

Hi Everyone
Try my new GSlide version which has built in MortScript plugin support
http://81.93.138.210/GSlide
I bet you can make some cool things with this
Also please try to make some skins. Still have some bugs in the skinning support but it works pretty well
Give me comments!
Ciao,
Lars
hallo, just found this. a smooth and fast fingerfriendly file explorer. very good.
but here are my problems:
- can´t open a txt-file file or xml file, but need a text editor, is it possible to link these files to totalcommander ?
- the app crashes (unexpected error)when i try to open the "windows" folder and "own videos"-folder ?
- what are these functions/apps at the right bottom ?
thanks for help. if you want i can do a skin for it.
bluemetalaxe said:
hallo, just found this. a smooth and fast fingerfriendly file explorer. very good.
but here are my problems:
- can´t open a txt-file file or xml file, but need a text editor, is it possible to link these files to totalcommander ?
- the app crashes (unexpected error)when i try to open the "windows" folder and "own videos"-folder ?
- what are these functions/apps at the right bottom ?
thanks for help. if you want i can do a skin for it.
Click to expand...
Click to collapse
It actually used Word Mobile by default when i tried openning a text file.
it runs very very smoothly. nice interface. very simple and straightforward.
obviously just a beginning as there's no copy, paste, cut... advanced config and other options. maybe a small kinetic toolbar throttlelauncher like with the most important actions on it?... just throwing stuff in the air.
very very cool.
nice start...
implement what already been stated + maybe some smoother transitions.
I love your program. It'll probably be a free alternative for Resco Explorer in the future. Keep developing and listen to user feedback.
One feaute request: I'd like to have the option of row height. This program will mainly be used with thumbs and not everyone has the same thumb size.
@nir: i know i can open txt-file with word but i rewrite xmls and txt-files for programming.
anyone elso has a crash when opening windows folder ?
Hi
Thanks for your feedback!
First of all, replace the old installation with the new 0.3 version.
Regarding opening files:
By default GSlide uses shell execute, which is to say the default windows association for the file type.
By adding the MortSupport feature i have made it possible for you to add custom actions by writing or modifying scripts in the actions folder. Read more on the site
GSlide has problems with large folders such as the windows folder. The memory runs out. This can be handled by paging the directory (splitting it up into several pages).
Regarding errors for the context shortcuts, its mostly due to different file paths in the operating system. In the swedish version for example My Documents is called Mina Dokument... Go to the /GSlide/actions/ folder and edit the "GSlidePath.mscr.inc" file which is the place where all system paths are stored. There you can change the paths according to your config.
Regarding skins:
Lot of updates have been made such as,
- row height
- background color
- font
- font weight
- etc...
I will keep updating GSlide with many cool things Help me to write cool script actions! Post to web maybe?
Dont forget to use the latest version!
Ciao,
Lars
New API script for all GSliders
I made a new, more logical API include to make developing of actions easier.
I have also added a "copy file" and "delete file" action as proof-of-concept.
the GSlideAPI script is pretty nifty if I might say so it implements a Object-Oriented looking code style to MortScript. check it out
Ciao
Just tried it and it seems to run pretty smooth. I am sure this is just the beginning for this app. With time this could be something very useful and great. Good job so far
Some suggestions for new versions:
- possibility to show the taskbar
- scrolling looks good, BUT it is a little bit difficult to stop the list and click on the right file - perhaps you could build in a gesture to stop (e.g. short tap on screen => stop)
- of course such basic things like "rename", "send" etc. (file size...)
BUT GREAT WORK! GSlide is a tool which fills another gap for a fingerfriendly Windows Mobile
Thx
Melkor
edit: Nevermind
Updated version coming shortly
hi
New GSlide on the way soon. I have been focusing on getting friendly with MortScript for the last couple of days
I will make a new actions menu with improved usability and make it possible for an action to span several steps (such as copying or moving files to other directories). the pure UI bling and skinning related stuff will have to wait a bit
Please give me feedback concerning the MortScript API.
Ciao

Developer's Notepad

Heyas!
Here's a rough of the notepad of my dream
Now it have:
a support of ANSI, UTF-8, UCS-2 for reading
use UTF-8 when saving into a file
syntax highlighting for C/C++/Java and a bit of HTML
tested (few) on megabyte files
a piece of slowness in some actions
I just want ask you, All, for opinion - does it have a right to live with current performance of the editor? Yeah, it should be equipped with
editing of a multiple documents simultaneously (tabbed)
customizable highlighter for a more languages
actions with binding on hardware keys
"recent files" list
search and replace
or evenmore ide-stuff: autocomplete, quick navigation thru source code, an external compiler support
(...)
But it will be later. I'm not sure if it too slow and huge for a pocket source code editing Or maybe there is a good and feature-rich notepad/IDE with all of I've mentioned above?
Nice idea. I'll try it out now, and see what happens.
I was able to open HTCHomeSettings.xml file that is too big for Total Commander or notepad in my phone (59.3kb).
Now I have a tool I can tweak my Manila2D settings while on the road.
I did notice the soft buttons are not in English, but everthing else shows up as English.
By the way, I used UPX standard compression and got your file to 144k before I put it on my phone.
NICE! one, this goes into my "useful apps" folder on my card
Really nice fast app.
I currently use cke (http://www.animaniak.com/cke/cke_main.asp) as my text/code editor on my WinMo device.
Have a look at the website and this app for some really good ideas to implement into yours.
The biggest problem I have with yours is that I can't browse the full file system.
Its a great start, and it sounds like you have a plan to make it a great piece of software.
It looks like you made space for the line numbers but they are not showing.... is that a bug or something you have just not completed?
An integrated ftp uploader/dowloader may also be really usefull...... So you can edit your website easily on the go.

[XAP][SOURCE] Native Toast Notification Launcher

This is a very simple application that enables you to specify any kind of Uri to launch. This is done through creating a Toast notification that, when clicked on, will execute the specified Uri. This uses a native method outside of the regular SDK; the standard methods available in the SDK that you'd normally use to create a Toast notification are restrictive in what kind of Uri you can specify. By using the native method not part of the SDK, these limitations can be by-passed.
I've attached both the XAP and the source code. The source project contains three projects:
CShellChromeAPI: The C++/CLI project which calls the native un-documented method
NativeToastLauncher: The .NET wrapper which simplifies the interaction with the C++/CLI project
NativeToastLauncherApp: The test application used to quickly launch any Uri
You'll notice I've hard-coded a default Uri when you launch the application: this will open the Windows Phone 8 "About" page.
To run this, you'll need to side load the XAP which requires a dev unlocked device...
Can I use any system GUID to launch?
djtonka said:
Can I use any sytem GUID to launch?
Click to expand...
Click to collapse
Any registered app GUID yes. You'd do app://GUID/_default (or replace the _default with the particular task to run - in most cases, that's _default).
@cpuguy this is awesome, thanks!
If you guys are looking for GUIDS and default tasks, they are all in the app's WMAppMAnifest.xml. the "ProductID" is the GUID and the "DefaultTask Name" property contains the name of the default task.
Hopefully we can use this to find a program to exploit.
Sent from my Nokia 521 using XDA Windows Phone 7 App
Does anyone happen to have a list of the ID's for the system and settings apps? Obviously, I can't go into the code and get these without messing with the file system. If no one has them, then I can just trial/error until I get some...
If you download the registry hives located at http://forum.xda-developers.com/showthread.php?t=2393883 , you can load the Software hvie and search for "app://" That will give you a few system files you can launch.
EDIT:
I posted a zip file of the default ones in a new thread.
IF anyone has tethering blocked, see if you can get it to work by launching this URI app://5B04B775-356B-4AA0-AAF8-6491FFEA5629/Default
compu829 said:
If you download the registry hives located at http://forum.xda-developers.com/showthread.php?t=2393883 , you can load the Software hvie and search for "app://" THat will give you a few system files you can launch.
Click to expand...
Click to collapse
Im only seeing the app:// function used on the system settings options after going through the regsistries so far.
aclegg2011 said:
Im only seeing the app:// function used on the system settings options after going through the regsistries so far.
Click to expand...
Click to collapse
that's what I saw too. I am having way more luck finding cool stuff in the extracted ffu. Take a look at the zip file in the new thread I started.
compu829 said:
that's what I saw too. I am having way more luck finding cool stuff in the extracted ffu. Take a look at the zip file in the new thread I started.
Click to expand...
Click to collapse
yea, I saw the new thread. Hopefully somebody can find a exploit in all that. It executes some cool files. Too bad there wasn't a cmd.exe file on our phones that we can execute.
aclegg2011 said:
yea, I saw the new thread. Hopefully somebody can find a exploit in all that. It executes some cool files. Too bad there wasn't a cmd.exe file on our phones that we can execute.
Click to expand...
Click to collapse
actually..there is! but it's stuck in a WIM. It inflates it on an "as-needed" basis.
I am hoping that we can use the backgroundworker to run some stuff elevated
compu829 said:
I am hoping that we can use the backgroundworker to run some stuff elevated
Click to expand...
Click to collapse
But they all are pretty much isolated. It is unlikely that you will be able to run anything elevated
aclegg2011 said:
yea, I saw the new thread. Hopefully somebody can find a exploit in all that. It executes some cool files. Too bad there wasn't a cmd.exe file on our phones that we can execute.
Click to expand...
Click to collapse
Not only is there a CMD.exe, but there are other interesting things like a BSOD screen, Control Panel, registry keys referencing desktop (A future exploit I might attempt), and even native EXEs (We knew about native EXEs since WPs release).
Why does this launcher not work with "normal" toasts: {YOUR-APP-GUID} and "/Page1.xaml"? Only with empty GUID and full path.
Similarly, any chance this could be used to open arbitrary XAML pages, rather than just the ones defined in the app manifest? For example, something like what was posted in another thread (http://forum.xda-developers.com/showpost.php?p=45265419&postcount=56) using the following URI: app://5edbdbbc-2ab2-df11-8a2f-00237de2db9e/_default#/View/APNSettingPage.xaml to launch a hidden page in the Connection Setup app. I don't know if that's a weird behavior of CS or if its universally possible (and while it feels lazy to ask, I'm at work right now). There are a bunch of "hidden" pages in the ATIV S Diagnosis app, some of which would be very useful, but the navigation code for them is blocked or outright missing. If we could invoke those directly... There are probably a bunch of other such hidden gems in other OEM apps too.
Yes you can. The way I found the one in the HTC app was by loading the dlls in JetBrain's dotPeek. Then I looked for the xaml files. It is all a relative URI based on what dotPeek/the app "sees". The only thing the manifest states is where the default entry point is for the page. Basically I looked in the manifest file for how it calls the "default" page. and then replace it with the relative URI for the other page you want.
If you guys want, I can write up a simple tutorial. I just have an HTC 8x, so my hands are tied. If someone can figure out how to deflate an nbh file so I can browse it, that'd be fantastic! I found a "dead" 521 on eBay that I am thinking of picking up for research since there are way more tools for Nokia.
compu829 said:
Yes you can. The way I found the one in the HTC app was by loading the dlls in JetBrain's dotPeek. Then I looked for the xaml files. It is all a relative URI based on what dotPeek/the app "sees". The only thing the manifest states is where the default entry point is for the page. Basically I looked in the manifest file for how it calls the "default" page. and then replace it with the relative URI for the other page you want.
If you guys want, I can write up a simple tutorial. I just have an HTC 8x, so my hands are tied. If someone can figure out how to deflate an nbh file so I can browse it, that'd be fantastic! I found a "dead" 521 on eBay that I am thinking of picking up for research since there are way more tools for Nokia.
Click to expand...
Click to collapse
That's correct. I have been navigating to various - normally unreachable - XAML pages in quite a few of the Nokia apps. I gave an example of that in a different thread:
Code:
app://[COLOR="Navy"][B]2377fe1b-c10f-47da-92f3-fc517345a3c0[/B][/COLOR]/[COLOR="Orange"][B]_default[/B][/COLOR]#/[COLOR="Green"][B]Launcher[/B][/COLOR];component/[COLOR="DarkRed"][B]MainPage.xaml[/B][/COLOR]
In this example, I launch the Nokia extras+info app (2377fe1b-c10f-47da-92f3-fc517345a3c0) with the default entry point (_default) which, as @compu829 stated, can found in the app's manifest. Following that, you can add "#/" (not sure if either the hash-tag or slash can be taken out or both are required to work but I know with both, it does work) to the URI to specify a particular XAML file you'd like to open. Following the "#/", you get to specify the assembly (i.e. the .DLL in the XAP file) in which the XAML file is located (Launcher). And finally, you add ";component/" followed by the full path to the XAML as defined in the embedded resource file (MainPage.xaml).
-W_O_L_F- said:
Why does this launcher not work with "normal" toasts: {YOUR-APP-GUID} and "/Page1.xaml"? Only with empty GUID and full path.
Click to expand...
Click to collapse
I presume your reference to the "empty GUID" is for the first parameter of my static Launcher.LaunchToast method? That first parameter is, as far as I can see, ignored for the actual toast launch. If I'd have the signature of the "Shell_PostMessageToast" method, I could perhaps understand what it does but, without it, I just knew it wanted a GUID (passed to it as a string) and that that GUID could be an empty one. I reversed engineered the signature from that native method (found in ShellChromeAPI.dll) by taking a look at another native assembly calling it. Naturally, this only tells shows me how that method is being called but doesn't return the name of the parameters. If I remember correctly, the assembly calling that method was passing its own application GUID... I could have done the same but, I didn't see what use it had so I decided to keep passing it an empty GUID.
The format of the toast is different most likely because that's the raw toast launching method. The other format you're used to is the more developer friendly one that's sanitized prior to launching it (so you can't launch another app directly).
Success!
@GoodDayToDie , this is exactly what I'm trying to do! And here is result:

Categories

Resources