[Windows Phone 7 Development and Hacking] fiinix:
The DllImport Project

This project is part "Real DllImport" and also not the same time. It has limited DllImport to only types "void();" (well isn't that DllImport :D)

Other CORE functions that require multiple [IN] or/and [OUT] are to complex for the code right now (there are so many possibilities).

Terms of use

, using the code (free to use, under my name "fiinix00 @ XDA"~ in app)

As posted to JaxBot :)

UPDATE @ (2011y-03m-26d - 23:08)

Ohyeah, i can control zune from my application (Resume, Stop, Pause, NextSong, PrevSong, ShutdownZune, StartZune, ... to come)

Turn on/off radio remote from code. (DAMN, the radio begins to play without "No antenna" but no sound, plugin again and it sounds :/)

UPDATE @ (2011-03-27 - 14:35)

- Set clipboard (lol, doesent even have NODO): DllImportCaller.lib.Clipboard_SET("Hello");

- Get clipboard: DllImportCaller.lib.Clipboard_GET(ref [string]);

- Enchanted: Phone.Clipboard.Value { get { ... } set { ... } }

- Basic calls against void without arguments: DllImportCaller.lib.VoidCall( [DLL] , [Method] );

- API for verifying method existence: DllImportCaller.NativeMethodExists( [DLL] , [Method] );

- Raw API for controlling vibrator (unlimited "on", also continues to vibrate on exit, dont forget to turn off :D): Phone.Vibrator. { Vibrate(), Stop() }

Source code + test XAP updated (2011-03-27-17:38) (Clipboard GET; is corrupt)

HELLO THERE TASKMANAGER!!

(I can now enumerate the running processes on the phone :D)

Proof: http://moitox.com/WP7tskMngr.png

Hook to keyboard, for some reason it only show interest in the "Search" button.

Documentation of proc:

[WP7Process].{ CreationTime, ExitTime, KernelTime, UserTime, <-UpdateTimes(), Kill(exitCode), { PROCESSENTRY32 RAW } }

^ for "currentProcess.Kill()" use "Phone.TaskManager.GentlyExitCurrentProcess();" the Kill(exitCode) KILLS

WP7Process[] = Phone.TaskManager.Named("taskhost");

WP7Process = Phone.TaskManager.CurrentProcess();

Documentation of network

- ConnectionType { Unk0, Unk1, Unk2, Connected, Unk3 ... }

- ConnectionType = Phone.Network.GetWirlessState;

Phone.KeyboardHook.IsKeyDown(int key)

> Search = 124 (lol)

Misc finds

DllImportCaller.NativeMethodExists("urlmon", "IsIntranetAvailable");

DllImportCaller.NativeMethodExists("urlmon", "ObtainUserAgentString");

- Code updated! (2011-03-28-22:12)

Added "Phone.DEP", dep is a wrapper against info stored in "Microsoft.Phone.Info.DeviceExtendedProperties"

Full "TaskHost.exe" support

HostInformation = Phone.TaskHost.GetCurrenHostInfo();

HostInformation {

fDehydrating = 0,

fRehydrated = 0,

hHostWnd = -25821178 /* This silverlight managed window (host window) */

szAppDataFolder = "\\Applications\\Data\\8DC5214E-88FA-4C2D-A379-2CD74FE24B72\\Data"

szAppInstallFolder = "\\Applications\\Install\\8DC5214E-88FA-4C2D-A379-2CD74FE24B72\\Install"

szAppIsolatedStorePath = "\\Applications\\Data\\8DC5214E-88FA-4C2D-A379-2CD74FE24B72\\Data\\IsolatedStore"

szProductId = "{8DC5214E-88FA-4C2D-A379-2CD74FE24B72}"

szTaskPage = "MainPage.xaml" /* Current page? */

szUri = "app://8DC5214E-88FA-4C2D-A379-2CD74FE24B72/_default"

ullLastInstanceId = 39 /* fully retarded property? */

}

Code updated! (2011-03-29-23:25)

new Phone functionality

Phone.OS.{ Shutdown(ewxCode) } /* 1.0.2 can still call it with "DllImportCaller.lib.ShutdownOS" (failed tho on mine in 1.0.2) */

Added "GetLastError7" (C++ ::GetLastError()) for better C# side error handling.

Code updated! (2011-04-03-12:37)

Code updated! (2011-04-04-21:48)

- App launcher code!!

- Enchanted IO support

- 1.0.6!

Code updated! (2011-04-05-22:08)

- Enchanted task support

- Console7.Title { get; set; } etc.

Code updated! (2011-04-08-00:03)

- Stable%: 97 :/

- Battery support (see battery info (CORE only))

- Phone.Sound { MasterVolume!! { get; set; }, etc } (controlling phone master volume over all processes)

- Phone.OS.Kernel.ResetDevice(); (instant stops kernel, instant shutdown, not recommended!)

Code updated! (2011-04-09-22:39)

- Enchanted "Phone.Battery" class

- Phone.TaskManager.+GetCurrentProcessId

- WiFi Controll! (On/Off) (from code!)

- Bluetooth Controll! (On/Off) (from code here toe!)

- Phone.OS.+GetSystemStartupItems(),+GetDesktopWindowHandle()

- New class "Phone.Search."+SearchFor,+OpenSearch,+BindSearchButtonToPage (FAILS)

- New class "Phone.XboxLive"+GetIsXboxLiveEnable,+GetIsSignedIn

- Yep: 1.0.9!

Code updated! (2011-04-17-22:01) //damn, not update in 8 days~

- Phone.OS.OSLanguage { SubLanguageID, PrimaryLanguageID }

- Phone.WP7Process.+ CurrentProcessID (int),+GetCurrentProcess() returns guaranteed the right taskhost @class_WP7Process

- Improved Phone.OS.Memory

- + Extra i don't remember :) (8 days)

Code updated! (2011-05-22-21:25)

- 1.2.1 (because 1.2 methods was commented out to set things right (less crash))

- HUGE improvements

- Removed unneeded **** to speed things up

- Screenshot 161 ms per capture (non-save-to-gallery) =D

- =D

Mango support added(2011-10-26-19:30)

- yep, "ATL" Mango compiled. I have not yet tested to run it on a NoDo.

- Trying to implement a ASM virtual machine; example:

[ASMMethod(Dll = "coredll", EntryPoint = "GetLastError")]
public delegate int GetLastError();

var last = ASMGenerator.GenerateDelegateFor<GetLastError>();
int code = last();

Custom tile support added(2011-11-07-23:08)

- Custom core tiles ftw!

[/CODE]

Source: Attatchment

-Compile VS2008 folder with C++ compiler from WM6 SDK

-Windows Mobile SDK 6 PRO

-Visual Studio 2010 (+ WP7 Silverlight SDK)

Test-app: Attatchment

-Deploy

-No need anymore to do a initialize button call, automatic called on first use in code "DllImportcaller.lib.cctor" by JIT (Net Framework just in time).

-Do some tests from the scrolling list. (due there are more CORE back-code API's than buttons, all tests can not be tested).

OLDER VERSIONS WILL BE DEPRECATED AND WILL BE REPLACED BY NEWER, MAX ATTACHMENTS IS 8.