//判断具体的应用程序是否已经安装,有些内置的程序不能判断。
//内置的程序一般可以通过查看程序菜单的快捷方式来判断是否安装。
BOOL IsAppInstalled( )
{
BOOL bRet = FALSE;
//查询可被卸载的软件信息
LPCTSTR szInput =
L"<wap-provisioningdoc>"
L"<characteristic type=/"UnInstall/">"
L"<characteristic-query type=/"Sogou SogouSip/"/>"
L"</characteristic>"
L"</wap-provisioningdoc>";
//DMProcessConfigXML函数可以访问移动设备的配置管理功能实体,借由XML信息来配置移动设备
LPTSTR szOutput = NULL;
HRESULT hr = DMProcessConfigXML(szInput, CFGFLAG_PROCESS, &szOutput);
if (S_OK == hr)
{
if( NULL != wcsstr(szOutput, L"parm name=/"uninstall/"") )
{
bRet = TRUE;
}
}
if (NULL != szOutput)
{
delete [] szOutput;
szOutput = NULL;
}
return bRet;
}
//获取已经安装的应用程序列表
BOOL GetAPPList()
{
BOOL bRet = FALSE;
//查询可被卸载的软件信息
LPTSTR szInput =
L"<wap-provisioningdoc>"
L"<characteristic-query type=/"UnInstall/"/>"
L"</wap-provisioningdoc>";
/*
查询结果的格式为:
<wap-provisioningdoc>
<characteristic type="UnInstall">
<characteristic type="Microsoft Application#2">
<parm name="uninstall" value="0"/>
</characteristic>
</characteristic>
</wap-provisioningdoc>
*/
//DMProcessConfigXML函数可以访问移动设备的配置管理功能实体,借由XML信息来配置移动设备
LPTSTR szOutput = NULL;
HRESULT hr = DMProcessConfigXML(szInput, CFGFLAG_PROCESS, &szOutput);
if (S_OK == hr)
{
//对查询结果进行xml解析,首先获取软件列表的软件名称个数
......
......
bRet = TRUE;
}
if (NULL != szOutput)
{
delete [] szOutput;
szOutput = NULL;
}
return bRet;
}