最近一个项目遇到的一个问题:在一款WM6的手机上调用不起PPC的默认浏览器.而刚好这款手机安装了UCWEB.其版本为6了.想让这个手机调用ucweb.下面是源码:
LPCTSTR root=L"Software//UCWEB6"; //支持6.0版本
//LPCTSTR root=L"Software//UCWEB"; ////支持旧版本,但不知道是那个版本了
LPCTSTR homeKey=L"HOMEPATH";
TCHAR path[1024];
DWORD len=1024*sizeof(TCHAR);
DWORD type;
HKEY key=NULL;
DWORD rs;
CString url = _T("www.baiduc.com");
if(ERROR_SUCCESS==RegCreateKeyEx(HKEY_LOCAL_MACHINE,root,0,NULL,0,0,NULL,&key,&rs)
&&ERROR_SUCCESS==RegQueryValueEx(key,homeKey,NULL,&type,(LPBYTE)path,&len))
{
PROCESS_INFORMATION pi;
CString exe=path;
exe+=L"//UCWEB.exe";
CreateProcess(exe,url,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,NULL,&pi);
}
//
其实原理很简单.就是到注册表中查找UCWEB的注册路径.然后创建UCWEB这个进程.
这里注意点的就是:UCWEB的注册表位置不知道.这里要知道了,简单的方式找一个注册表查看器.找到这个key就可以了.
附加点调用PPC的浏览器源码:
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask =SEE_MASK_FLAG_NO_UI;
ShExecInfo.hwnd = m_hWnd; //要一个窗口句柄的
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile =iUrl;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);