在Windows操作系统中改变文件打开方式

2016-02-19 18:51 3 1 收藏

下面是个简单易学的在Windows操作系统中改变文件打开方式教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

在Windows95/NT/98操作系统中改变文件打开方式的问题,又可称为改变文件类型关联的问题,即把某类型(扩展名)的文件与某应用程序关联,例如通常当双击*.txt文件时系统自动调用Notepad.exe。本文介绍利用Windows注册表编辑器Regedit.exe手工或编程改变文件打开方式的方法,并提供程序实例。
  一、基本思路:
  1、注册表编辑器Regedit.exe是用于更改系统注册表设置的高级工具,包含了关于系统配置及运行的重要信息,默认访问路径为C:WindowsRegedit.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文件的图标;shellopencommand,右侧显示栏内“C:WINDOWSNOTEPAD.EXE%1”为打开*.txt文件的应用程序名称及参数。  改变打开文件方式的方法(例如用VISIO打开*.exc文件):
  ◆手工:打开系统注册表,在HKEY_CLASSES_ROOT下找到.exc及另一主键名,找到此主键,将shellopencommand右侧显示栏内“C:WINDOWSNOTEPAD.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))
  IfintZeroPos0Then
  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+“shellopencommand”,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+`shellopencommand`,``,`c:visio.exe%1`);
  finally
  MyRegistry.Free;
  end;
  ShowMessage(`改变文件打开方式成功!`);
  end;
  4、按F9运行程序,在简体中文Windows95/NT/98、Delphi3.0/4.0环境中调试通过。->

来源:https://www.tulaoshi.com/n/20160219/1619207.html

延伸阅读
标签: windows系统
如何修改Windows8系统下的文件关联和打开方式   1、首先打开控制面板,选择默认程序; 2、选择设置默认程序; 3、在左侧窗格选定一个应用程序,然后点击选择此程序的默认值; 4、可以选择此程序关联的文件类型; 5、回到控制面板,默认程序界面,选择将文件类型或协议与程序关联; 6、选择一个要...
标签: 电脑入门
因工作需要要分析一封邮件的
我们可以通过Windowsshell.方法使用ShellExecuteAPI函数来加载文档。这个函数将自动的来判断文件的默认打开方式,并用默认的打开方式来开启文档。 以下就是ShellExecute函数的声明: PublicDeclareFunctionShellExecuteLib"shell32.dll"Alias_ "ShellExecuteA"_ (ByValhWndAsLong,ByVallpOperationAsString,_ ByV...
标签: 服务器
WindowsXP快速修改文件打开方式的方法   WinXP用户安装了一些应用程序之后,会使得原来的一些文件关联发生改变,那么怎么才能快速修改这些文件的打开方式呢?今天小编就教大家一个简单的方法。 解决方法: 1. 在任何一个MPG文件上点击右键。 2. 选择属性命令,在常规选项卡中点击更改按钮。 3. 打开更改打...
标签: 电脑入门
虽然注册表中的数据非常复杂,但是为了改善系统性能,我们不得不对注册表动手。而在手工修改注册表的时候,很可能会破坏注册表中的内容,比如:在无意中双击某个注册表文件(*.reg)时,系统默认的方式“合并”一下子就将其内容导入了注册表,这样就可能破坏整个系统。其实我们可以将系统对双击注册表文件的响应方式由默认的“合并”改为“编...

经验教程

876

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部