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(RegOpenKeyExA(hkRoot,
"htmlfile\\shell\\open\\command",
0,
KEY_ALL_ACCESS,
&hSubKey)==ERROR_SUCCESS)
{
//读取注册表,获取默认浏览器的命令行
RegEnumValueA(hSubKey,
0,
ValueName,
&cbValueName,
NULL,
&dwType,
DataValue,
&cbDataValue);
// 调用参数(主页地址)赋值
strcpy(ShellChar,(char *)DataValue);
strcat(ShellChar, "www.baidu");
// 启动浏览器
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缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 |
|
可以有两种的方式 第一:通过winecec()函数,但是有取得注册表的键值 第二:通过shellexec()他很简单 就是一句话 ShellExecute(NULL,"open","f:\\11.htm",NULL,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,NULL,&hkRoot)==ERROR_SUCCESS)
{
//打开子关键字
if(RegOpenKeyExA(hkRoot,
"htmlfile\\shell\\open\\command",
0,
KEY_ALL_ACCESS,
&hSubKey)==ERROR_SUCCESS)
{
//读取注册表,获取默认浏览器的命令行
RegEnumValueA(hSubKey,
0,
ValueName,
&cbValueName,
NULL,
&dwType,
DataValue,
&cbDataValue);
// 调用参数(主页地址)赋值
strcpy(ShellChar,(char *)DataValue);
strcat(ShellChar, "www.baidu");
// 启动浏览器
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缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 |
|