在VC6.0中调用浏览器访问WEB页面

发表于:2007-07-14来源:作者:点击数: 标签:
一、前 言 不少软件作品都在其[帮助]菜单中加入了[访问我们的主页……]之类的功能,小辉对此颇感兴趣,查了一些关于它的实现方法,总觉得过于复杂。小辉在设计《小辉桌面王——酒井法子写真集系列》的时候,成功地在程序中实现了[访问小辉的主页……]的功能
一、前 言


  不少软件作品都在其[帮助]菜单中加入了[访问我们的主页……]之类的功能,小辉对此颇感兴趣,查了一些关于它的实现方法,总觉得过于复杂。小辉在设计《小辉桌面王——酒井法子写真集系列》的时候,成功地在程序中实现了[访问小辉的主页……]的功能(右图中的第四个按钮),代码段非常简洁,现在有关设置思想和实现代码附后。《小辉桌面王——酒井法子写真集》是小辉写的一个小工具,感兴趣的读者可以从这里下载源代码(498KB)。


二、设计思想


  小辉的实现方法是:首先,通过读取注册表,取得Windows默认浏览器的路径名,然后带参数执行默认浏览器,所带的参数即所要调用的主页地址。——说穿了其实很简单的。


  Windows默认浏览器的键值在注册表中的存放目录是‘HKEY_CLASSES_ROOT\htmlfile\shell\open\command’。


  实现代码如下:


三、代码设计


void CXHDeskDlg::OnBtnWeb()


{


HKEY hkRoot,hSubKey; //定义注册表根关键字及子关键字


char ValueName[256];


unsigned char DataValue[256];


unsigned long cbValueName=256;


unsigned long cbDataValue=256;


char ShellChar[256]; //定义命令行


DWORD dwType;


//打开注册表根关键字


if(RegOpenKey(HKEY_CLASSES_ROOT,NULL,&hkRoot)==ERROR_SUCCESS)


{


//打开子关键字


if(RegOpenKeyEx(hkRoot,


"htmlfile\\shell\\open\\command",


0,


KEY_ALL_ACCESS,


&hSubKey)==ERROR_SUCCESS)


{


//读取注册表,获取默认浏览器的命令行


RegEnumValue(hSubKey,


0,


ValueName,


&cbValueName,


NULL,


&dwType,


DataValue,


&cbDataValue);


// 调用参数(主页地址)赋值


strcpy(ShellChar,(char *)DataValue);


strcat(ShellChar," www.neaase.net/~xiaohui");


// 启动浏览器


WinExec(ShellChar,SW_SHOW);


}


else


MessageBox("WEB浏览器打开错误!","错误",MB_OK);


}


else


MessageBox("WEB浏览器打开错误!","错误",MB_OK);


//关闭注册表


RegCloseKey(hSubKey);


RegCloseKey(hkRoot);


}

原文转自:http://www.ltesting.net