×
Namespaces

Variants
Actions

How to start and stop exe using Symbian C++

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
CompatibilityArticle
Created: giridharn (16 May 2007)
Last edited: hamishwillee (18 Nov 2013)

Contents

To start a exe

Symbian OSv9, 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 OS v9, RProcess

#include <apgcli.h> // link against apgrfx.lib
_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.

Symbian OS v9, 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 OS v8 and earlier

#include <eikdll.h>
TInt err = EikDll::StartExeL(_L("c:\\system\\apps\\test.exe"));


To stop it

First, you need to find the process

On Symbian OS v9, 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

Warning.pngWarning: Killing a process is bad practice as the internal state of the process and of the resources it might have open cannot be controlled. It is recommended that your implement a communication mechanism that would allow you to tell your daemon to release the reserved resources and then exit.

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 - in hex lowercase.
TFullName result;
RProcess processHandle;
while ( processFinder.Next(result) == KErrNone)
{
User::LeaveIfError(processHandle.Open ( result, EOwnerThread));
processHandle.Kill(KErrNone);
processHandle.Close();
}


Related Links:

Version Hint

Windows Phone: [[Category:Windows Phone]]
[[Category:Windows Phone 7.5]]
[[Category:Windows Phone 8]]

Nokia Asha: [[Category:Nokia Asha]]
[[Category:Nokia Asha Platform 1.0]]

Series 40: [[Category:Series 40]]
[[Category:Series 40 1st Edition]] [[Category:Series 40 2nd Edition]]
[[Category:Series 40 3rd Edition (initial release)]] [[Category:Series 40 3rd Edition FP1]] [[Category:Series 40 3rd Edition FP2]]
[[Category:Series 40 5th Edition (initial release)]] [[Category:Series 40 5th Edition FP1]]
[[Category:Series 40 6th Edition (initial release)]] [[Category:Series 40 6th Edition FP1]] [[Category:Series 40 Developer Platform 1.0]] [[Category:Series 40 Developer Platform 1.1]] [[Category:Series 40 Developer Platform 2.0]]

Symbian: [[Category:Symbian]]
[[Category:S60 1st Edition]] [[Category:S60 2nd Edition (initial release)]] [[Category:S60 2nd Edition FP1]] [[Category:S60 2nd Edition FP2]] [[Category:S60 2nd Edition FP3]]
[[Category:S60 3rd Edition (initial release)]] [[Category:S60 3rd Edition FP1]] [[Category:S60 3rd Edition FP2]]
[[Category:S60 5th Edition]]
[[Category:Symbian^3]] [[Category:Symbian Anna]] [[Category:Nokia Belle]]

This page was last modified on 18 November 2013, at 02:52.
216 page views in the last 30 days.
×