Categories: Symbian C++ | S60 | How To | Code Examples | Base/System
This page was last modified 16:34, 1 January 2008.
How to start and stop exe
From Forum Nokia Wiki
Contents |
To start a exe
Symbian 8 and earlier
#include <eikdll.h> TInt err = EikDll::StartExeL(_L("c:\\system\\apps\\test.exe"));
Symbian 9, for Server or Console application
#include <apgcli.h> // link against apgrfx.lib #include <apacmdln.h> // link against apparc.lib TThreadId app_threadid; CApaCommandLine* cmdLine; cmdLine=CApaCommandLine::NewLC(); cmdLine->SetExecutableNameL(_L("test.exe")); cmdLine->SetCommandL( EApaCommandRun ); RApaLsSession ls; User::LeaveIfError(ls.Connect()); TInt err=ls.StartApp(*cmdLine,app_threadid); ls.Close(); CleanupStack::PopAndDestroy(); // cmdLine
Symbian 9, for View-based application
#include <apgcli.h> // link against apgrfx.lib const TUid KAppUid={0x12345678}; _LIT(KDocName,"C:\\Data\\document.txt"); TThreadId app_threadid; RApaLsSession ls; User::LeaveIfError(ls.Connect()); TInt err=ls.StartDocument(KDocName, KAppUid, app_threadid); ls.Close();
Symbian 9, RProcess
_LIT(KMyExeFile,"test.exe"); _LIT(KMyExeFileCmd,"first_argument second third"); RProcess proc; User::LeaveIfError(proc.Create(KMyExeFile,KMyExeFileCmd)); // start the process running! Don't forget this. proc.Resume(); proc.Close(); // Closes the handle, not the process.
To stop it
First, you need to find the process
On Symbian 9, process name is in the following format:
<name>[<UID3>]<instance number>
where: <name> - the name of executable or the name of Console - so remember it can be changed;
<UID3> - UID3 of executable, in lowercase HEX, 8 digits, always the same;
<instance number> - instance number, 4 digits, starting from 0001. For example name of kernel process is:
ekern.exe[100041af]0001
Killing
Note: For S60 3rd Edition development, you are required the PowerMgmt capability to achieve this task.
TFindProcess processFinder(_L("test.exe*")); // by name, case-sensitive //or //TFindProcess processFinder(_L("*[12345678]*")); // by UID3 TFullName result; RProcess processHandle; while ( processFinder.Next(result) == KErrNone) { User::LeaveIfError(processHandle.Open ( processFinder, EOwnerThread)); processHandle.Kill(KErrNone); processHandle.Close(); }
| "Danger, Will Robinson!" |
|---|
|
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| MessageConnection.receive() | qwerty_wwd | Mobile Java Networking & Messaging & Security | 5 | 2006-03-07 07:52 |
| 如何在s60模拟器中启动exe程序? | iincity | Symbian | 7 | 2005-03-07 14:07 |
| Error Message: MMFControllerProxyServer......? | BeanHe | Symbian Media (Graphics & Sounds) | 0 | 2007-06-04 09:55 |
| starting an exe | ceehira | General Symbian C++ | 12 | 2006-08-17 12:26 |
| Carbine IDE gives VerifyError but preverifier.exe commandline is ok | whome1 | Mobile Java Tools & SDKs | 1 | 2006-09-21 15:03 |
