在Windows操作系统中改变文件打开方式
2018-06-17 17:10:21来源:未知 阅读 ()
一、基本思路:
1、注册表编辑器Regedit.exe是用于更改系统注册表设置的高级工具,包含了关于系统配置及运行的重要信息,默认访问路径为C:\Windows\Regedit.exe。双击Regedit.exe图标,运行注册表编辑器。在左侧显示栏内看到HKEY_CLASSES_ROOT、KEY_CURRENT_USER、HKEY_LOCAL_MACHINE等主键。与文件类型有关的所有主键、键名、键值都存放在HKEY_CLASSES_ROOT下。
◆双击HKEY_CLASSES_ROOT,向下拖动滚动条,找到.txt主键,右侧显示栏内“txtfile”说明:在HKEY_CLASSES_ROOT下有一txtfile主键,其下存放了打开*.txt文件应用程序的有关信息。
◆向下拖动滚动条,找到txtfile主键,右侧显示栏内“文本文档”为文件类型描述。双击txtfile,DefaultIcon右侧显示栏内“shell32.dll,-152”为*.txt文件的图标;shell\open\command,右侧显示栏内“C:\WINDOWS\NOTEPAD.EXE%1”为打开*.txt文件的应用程序名称及参数。 改变打开文件方式的方法(例如用VISIO打开*.exc文件):
◆手工:打开系统注册表,在HKEY_CLASSES_ROOT下找到.exc及另一主键名,找到此主键,将shell\open\command右侧显示栏内“C:\WINDOWS\NOTEPAD.EXE%1”改为“C:\VISIO.EXE%1”(假设VISIO.EXE的访问路径是C:\,具体视情况而定),按F5刷新系统注册表。
◆编程:利用VB、Delphi、C++Builder等读写系统注册表,可自动改变文件打开方式。本文提供VB、Delphi编程实例。
二、编程实例:
㈠利用VB编程
1、在VB5.0IDE中,新建工程Project1,在Form1上添加命令按钮Command1。
2、选择菜单“工程”—“添加模块”—“模块”—“打开”,在Project1中添加模块Moudle1。
3、在Moudle1“通用—声明”部分声明API函数和常量。
ConstREG_SZ=1
GlobalConstHKEY_CLASSES_ROOT=&H80000000
DeclareFunctionOSRegQueryValueExLib“advapi32”Alias“RegQueryValueExA”(ByValhKeyAsLong,ByVallpszValueNameAsString,
ByValdwReservedAsLong,lpdwTypeAsLong,lpbDataAsAny,cbDataAsLong)AsLong
DeclareFunctionOSRegOpenKeyLib“advapi32”Alias“RegOpenKeyA”(ByValhKeyAsLong,ByVallpszSubKeyAsString,phkResultAsLong)AsLong
DeclareFunctionOSRegSetValueExLib“advapi32”Alias“RegSetValueExA”(ByValhKeyAsLong,ByVallpszValueNameAsString,
ByValdwReservedAsLong,ByValfdwTypeAsLong,lpbDataAsAny,ByValcbDataAsLong)AsLong
DeclareFunctionOSRegCloseKeyLib“advapi32”Alias“RegCloseKey”(ByValhKeyAsLong)AsLong
4、在Moudle1中编写函数。
FunctionRegOpenKey(ByValhKeyAsLong,ByVallpszSubKeyAsString,
phkResultAsLong)AsBoolean
DimlResultAsLong
OnErrorGoTo0`关闭错误陷阱
lResult=OSRegOpenKey(hKey,lpszSubKey,phkResult)
IflResult=0Then
RegOpenKey=True
Else
RegOpenKey=False
EndIf
EndFunction
FunctionRegSetStringValue(ByValhKeyAsLong,ByValstrValueNameAsString,
ByValstrDataAsString,OptionalByValfLog)AsBoolean
DimlResultAsLong
OnErrorGoTo0
lResult=OSRegSetValueEx(hKey,strValueName,0&,REG_SZ,ByValstrData,
LenB(StrConv(strData,vbFromUnicode))+1)
IflResult=0Then
RegSetStringValue=True
Else
RegSetStringValue=False
EndIf
EndFunction
FunctionStripTerminator(ByValstrStringAsString)AsString
DimintZeroPosAsInteger
intZeroPos=InStr(strString,Chr$(0))
IfintZeroPos>0Then
StripTerminator=Left$(strString,intZeroPos-1)
Else
StripTerminator=strString
EndIf
EndFunction
FunctionRegQueryStringValue(ByValhKeyAsLong,ByValstrValueNameAsString,
strDataAsString)AsBoolean
DimlResultAsLong
DimlValueTypeAsLong
DimstrBufAsString
DimlDataBufSizeAsLong
RegQueryStringValue=False
OnErrorGoTo0
lResult=OSRegQueryValueEx(hKey,strValueName,0&,lValueType,ByVal0&,
lDataBufSize)
IflResult=ERROR_SUCCESSThen
IflValueType=REG_SZThen
strBuf=String(lDataBufSize,“”)
lResult=OSRegQueryValueEx(hKey,strValueName,0&,0&,ByValstrBuf,
lDataBufSize)
IflResult=ERROR_SUCCESSThen
RegQueryStringValue=True
strData=StripTerminator(strBuf)
EndIf
EndIf
EndIf
EndFunction
5、双击Command1,编写Click事件代码。
PrivateSubCommand1_Click()
DimhKeyAsLong
DimMyReturnAsLong
DimMyDataAsString
MyReturn=OSRegOpenKey(HKEY_CLASSES_ROOT,“.exc”,hKey)
MyReturn=RegQueryStringValue(hKey,“”,MyData)
MyReturn=OSRegOpenKey(HKEY_CLASSES_ROOT,MyData+“\shell\open\command”,hKey)
MyReturn=RegSetStringValue(hKey,“”,“c:\visio.exe1%”,False)
IfMyReturnThen
MsgBox“改变文件打开方式成功!”,vbInformation,“请注意”
Else
MsgBox“改变文件打开方式失败!”,vbExclamation,“请注意”
EndIf
OSRegCloseKey(hKey)
EndSub
6、按F5运行程序,在简体中文Windows95/NT/98、VB5.0/6.0环境中调试通过。
㈡利用Delphi编程
1、在Delphi3.0IDE中,新建工程Project1,在Form1上添加按钮Button1。
2、在uses子句中添加Registry。
3、双击Button1,编写Click事件代码。
procedureTForm1.Button1Click(Sender:Tobject);
var
MyRegistry:TRegINIFile;
Return:string;
begin
try
MyRegistry:=TRegINIFile.Create(``);
MyRegistry.RootKey:=HKEY_CLASSES_ROOT;
Return:=MyRegistry.ReadString(`.gid`,``,`No!NotFoundtheKey!`);
MyRegistry.WriteString(Return,``,`这只是一个演示!`);
MyRegistry.WriteString(Return+`\DefaultIcon`,``,`c:\visio.exe,1`);
MyRegistry.WriteString(Return+`\shell\open\command`,``,`c:\visio.exe%1`);
finally
MyRegistry.Free;
end;
ShowMessage(`改变文件打开方式成功!`);
end;
4、按F9运行程序,在简体中文Windows95/NT/98、Delphi3.0/4.0环境中调试通过。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 在Windows98中使用VB5.0编程疑难一解 2018-06-17
- 在VisualBasic中判断Windows9x的运行模式 2018-06-17
- 调用API函数设计ABOUT窗口 2018-06-17
- 文件与VB程序关联后——双击和打开 2018-06-17
- 为VB窗口增添平铺贴图背景 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash