To close a process correctly you should send a close message to the application rather than just killing it, this way the application can close down gracefully.
With Compact Framework you can use the excellent OpenNETCF Smart Device Framework to send a CLOSE windows message to a window handle.
To get the correct window handle you need to use the Win32Window class from the OpenNETCF.Win32 namespace. You need to know 2 pieces of info for this - the process class id and the window name.
Finding the process Class Id and Window Name
To find the process class Id you can use handy Remote Spy application which is part of the Visual Studio 200x installation.
Start the application you want to shutdown on the CE device and connect to the device with Remote Spy.
When Remote Spy has connected it will load up a list of running processes. Find the process for your running application. Here the application I want to shutdown is called S3 Client. Double clicking the list item will bring up the Window Property dialog.
From this dialog I can get the Class Id (#NETCF_AGL_BASE_) and the Window Name (S3 Client). The Window Name is actually the form caption so you might already know that info ;)
Sending the CLOSE message to the Window
Pass in the Class Id and Window Name to the Win32Window.FindWindow method. This will return a reference to the Win32Window object. We can now use this object to get the handle to pass in to the Win32Window.SendMesage method as shown below:
Win32Window theWindow = Win32Window.FindWindow("#NETCF_AGL_BASE_", "S3 Client");
if (theWindow != null)
Win32Window.SendMessage(theWindow.Handle, (int)WM.CLOSE, 0, 0);