第二:通过shellexec()他很简单 就是一句话
ShellExecute(NULL,"open","f:\\11.htm",NULL,SW_SHOW);
把第一种的代码
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,&hkRoot)==ERROR_SUCCESS)
{
//打开子关键字
if(RegOpenKeyExA(hkRoot,"htmlfile\\shell\\open\\command",KEY_ALL_ACCESS,&hSubKey)==ERROR_SUCCESS)
{
//读取注册表,获取默认浏览器的命令行
RegEnumValueA(hSubKey,ValueName,&cbValueName,&dwType,DataValue,&cbDataValue);
// 调用参数(主页地址)赋值
strcpy(ShellChar,(char *)DataValue);
strcat(ShellChar,"www.baidu.com");
// 启动浏览器
WinExec(ShellChar,SW_SHOW);
}
else
TRACE("WEB浏览器打开错误!");
}
else
TRACE("WEB浏览器打开错误!");
//关闭注册表
RegCloseKey(hSubKey);
RegCloseKey(hkRoot);
RegOpenKeyEx
RegOpenKeyEx()
函数功能描述:打开一个制定的注册表键 函数原型: LONG RegOpenKeyEx( ); 参数: |
RegEnumValue |
VB声明 | |
Declare Function RegEnumValue Lib"advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long,ByValdwIndex As Long,ByVal lpValueName As String,lpcbValueName AsLong,lpReserved As Long,lpType As Long,lpData As Byte,lpcbDataAs Long) As Long | |
说明 | |
枚举指定项的值 | |
返回值 | |
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 | |
参数表 | |
参数 | 类型及说明 |
hKey | Long,一个已打开项的句柄,或者指定一个标准项名 |
dwIndex | Long,欲获取值的索引。注意第一个值的索引编号为零 |
lpValueName | String,用于装载位于指定索引处值名的一个缓冲区 |
lpcbValueName | Long,用于装载lpValueName缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 |
lpReserved | Long,未用;设为零 |
lpType | Long,用于装载值的类型代码的变量 |
lpData | Byte,用于装载值数据的一个缓冲区 |
lpcbData | Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 |
|