⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 launchsysappengine.cpp

📁 symbian 的文件保密软件,可以把文件设置为私有或者还原为公共,私有时,别人没有权限是看不到的,还可以参照您的需求或建议为您定制软件.
💻 CPP
字号:
/*
*======================================================== 
*  文件名	: LaunchSysAppEngine.h
*  功能  	: 调用手机自带的应用程序
*  创建 	: 13/11/2006 chenqing
*  说明		:
*  项目     : Netfrog    
*  版本 	: 1.0
*  版权		: 深圳千寻网有限公司
*=========================================================
*/
#include <aknnotewrappers.h>	//for note dialog
#include <apgcli.h> //Link against: apgrfx.lib for Class RApaLsSession
#include <apmstd.h> //Link against: apmime.lib Class TDataType
#include <apgtask.h> //Link against: apgrfx.lib Class TApaTaskList
#include <eikenv.h>         //for CEikon::Static 

#include "LaunchSysAppEngine.h"
#include "ToUnicode.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const TUid CameraId1 = {0x1000593F}; //第一版的摄像机ID,可能比较老的机型使用此ID
const TUid CameraId2 = {0x101f857a}; //第二版的摄像机ID
const TUid CameraId3 = {0x101ffa86}; //第三版的摄像机ID,NOKIA已公布第三版使用此ID,但还未见使用

CGALaunchSysAppEngine::CGALaunchSysAppEngine()
{

}

CGALaunchSysAppEngine::~CGALaunchSysAppEngine()
{

}

/*********************************************************
*	功能描述:
*		通过文件关联的方式来启用手机自带的应用程序
*
*	参数说明:
*		aFileName	:	[const TDesC&]文件全路径
*	返回值:
*		TBool		:	如果成功启用返回ETrue,否则返回EFalse
*	注意事项:
*		无
**********************************************************/
TBool CGALaunchSysAppEngine::LaunchAssociateFileL(const TDesC& aFileName)
{
	//文件路径不可能不大于0
	if(aFileName.Length() <= 0)
	{
		return EFalse;
	}
	//与这个文件关联的手机自带应用程序的UID
	TUid			imageViewerId;
	//手机已安装应用程序的架构Session
	RApaLsSession	appSession;
	//数据类型,也即文件类型
	TDataType		dataType;
	//手机正在运行的所有应用程序列表
	TApaTaskList	taskList( iEikonEnv->WsSession());

	//应用程序架构的Session必须要先连接
	User::LeaveIfError(appSession.Connect());

	//查找与传递文件相关联的应用程序的UID和文件类型
	TRAPD( error,appSession.AppForDocument(aFileName,imageViewerId,dataType));
	if(error != KErrNone)
	{
		appSession.Close();
		return EFalse;
	}
	//这个相关联应用程序不是调用这个函数的本身
	if( imageViewerId != TUid::Uid(0)) //0 means itself
	{
		//看在正在运行的程序列表里有没有这个UID
		TApaTask imageTask = taskList.FindApp(imageViewerId);
		//查看该应用程序是否正在运行
		if(imageTask.Exists())
		{
			//把该应用程序置于顶端
			imageTask.BringToForeground();
			//使用该应用程序执行本文件
			TRAPD(error,imageTask.SwitchOpenFile(aFileName));
			if(error != KErrNone)
			{
				appSession.Close();

				return EFalse;
			}
		}
		else
		{
			//如果该应用程序没启动,启动它并让它执行本文件
			TThreadId id;
			appSession.StartDocument(aFileName,imageViewerId,id);
		}

		appSession.Close();
		return ETrue;
	}

	appSession.Close();

	return EFalse;
}

TBool CGALaunchSysAppEngine::LaunchSysAppByUidL(const TUid id)
{
	//应用程序的架构Session
	RApaLsSession	appSession; 
	//手机运行中的所有应用程序列表
	TApaTaskList	taskList(iEikonEnv->WsSession());
	//应用程序架构的Session必须要先连接
	User::LeaveIfError(appSession.Connect());
	//这个相关联应用程序不是调用这个函数的本身
	if( id != TUid::Uid(0))
	{
		//在正在运行的任务列表中查找该应用程序是否正在运行
		TApaTask appTask = taskList.FindApp(id);
		//正在运行
		if(appTask.Exists())
		{	
			//把该应用程序带到顶端窗口
			appTask.BringToForeground();
		}
		else
		{
			//如果没有运行,启动它.
			_LIT(newDoc,"");
			TThreadId threadId;
			//创建一个Document,"newDoc"值没什么,目的只是启动该应用程序
			appSession.CreateDocument(newDoc,id,threadId);
		}
		
	}
	else
	{
		appSession.Close();
		return EFalse;
	}
	appSession.Close();
	return EFalse;
}

TBool CGALaunchSysAppEngine::LaunchCameraL()
{
	//试图打开第二版的摄像机
	TRAPD(error2,LaunchSysAppByUidL(CameraId2));
	if(error2 != KErrNone)
	{
		//试图打开第三版的摄像机
		TRAPD(error3,LaunchSysAppByUidL(CameraId3));
		if(error3 != KErrNone)
		{
			//试图打开第一版的摄像机
			TRAPD(error1,LaunchSysAppByUidL(CameraId1));
			if(error1 != KErrNone)
			{
				TText8* str = (TText8*)"不能打开摄像机";
				HBufC16* msg = ToUnicode::ConvertL(str);
				CleanupStack::PushL(msg);
				
				CAknErrorNote* note = new(ELeave)CAknErrorNote();
				note->ExecuteLD(*msg);
				
				CleanupStack::PopAndDestroy(msg);
				msg = NULL;
				
				return EFalse;
				
			}			
			return ETrue;
		}
		return ETrue;
	}
	else
	{
		return ETrue;
	}
	
	return EFalse;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -