麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

在Windows操作系統(tǒng)中改變文件打開方式

2019-11-18 17:32:19
字體:
供稿:網(wǎng)友
在Windows95/NT/98操作系統(tǒng)中改變文件打開方式的問題,又可稱為改變文件類型關聯(lián)的問題,即把某類型(擴展名)的文件與某應用程序關聯(lián),例如通常當雙擊*.txt文件時系統(tǒng)自動調(diào)用Notepad.exe。本文介紹利用Windows注冊表編輯器Regedit.exe手工或編程改變文件打開方式的方法,并提供程序?qū)嵗?br>  一、基本思路:
  1、注冊表編輯器Regedit.exe是用于更改系統(tǒng)注冊表設置的高級工具,包含了關于系統(tǒng)配置及運行的重要信息,默認訪問路徑為C:/Windows/Regedit.exe。雙擊Regedit.exe圖標,運行注冊表編輯器。在左側(cè)顯示欄內(nèi)看到HKEY_CLASSES_ROOT、KEY_CURRENT_USER、HKEY_LOCAL_MACHINE等主鍵。與文件類型有關的所有主鍵、鍵名、鍵值都存放在HKEY_CLASSES_ROOT下。
  ◆雙擊HKEY_CLASSES_ROOT,向下拖動滾動條,找到.txt主鍵,右側(cè)顯示欄內(nèi)“txtfile”說明:在HKEY_CLASSES_ROOT下有一txtfile主鍵,其下存放了打開*.txt文件應用程序的有關信息。
  ◆向下拖動滾動條,找到txtfile主鍵,右側(cè)顯示欄內(nèi)“文本文檔”為文件類型描述。雙擊txtfile,DefaultIcon右側(cè)顯示欄內(nèi)“shell32.dll,-152”為*.txt文件的圖標;shell/open/command,右側(cè)顯示欄內(nèi)“C:/WINDOWS/NOTEPAD.EXE%1”為打開*.txt文件的應用程序名稱及參數(shù)。  改變打開文件方式的方法(例如用VISIO打開*.exc文件):
  ◆手工:打開系統(tǒng)注冊表,在HKEY_CLASSES_ROOT下找到.exc及另一主鍵名,找到此主鍵,將shell/open/command右側(cè)顯示欄內(nèi)“C:/WINDOWS/NOTEPAD.EXE%1”改為“C:/VISIO.EXE%1”(假設VISIO.EXE的訪問路徑是C:/,具體視情況而定),按F5刷新系統(tǒng)注冊表。
  ◆編程:利用VB、Delphi、C++Builder等讀寫系統(tǒng)注冊表,可自動改變文件打開方式。本文提供VB、Delphi編程實例。
  二、編程實例:
  ㈠利用VB編程
  1、在VB5.0IDE中,新建工程PRoject1,在Form1上添加命令按鈕Command1。
  2、選擇菜單“工程”—“添加模塊”—“模塊”—“打開”,在Project1中添加模塊Moudle1。
  3、在Moudle1“通用—聲明”部分聲明API函數(shù)和常量。
  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中編寫函數(shù)。
  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環(huán)境中調(diào)試通過。
  ㈡利用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環(huán)境中調(diào)試通過。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品午夜未成人免费观看 | 91精品视频免费 | 色屁屁xxxxⅹ在线视频 | 97中文 | 亚洲欧美日韩中文在线 | 国产日韩欧美一区 | 久久九九热re6这里有精品 | 成年性羞羞视频免费观看无限 | 国产成人在线免费观看视频 | 久久久青| 久久久久99精品 | 午夜国产精品成人 | 美女黄视频在线观看 | 99爱福利视频在线观看 | 精品久久中文网址 | 热re91久久精品国产99热 | av在线免费观看播放 | 成人毛片100免费观看 | 在线看成人av | 欧美a视频 | 久久91精品国产91久久yfo | 亚洲国产美女视频 | 国产在线精品一区二区不卡 | 粉嫩粉嫩一区二区三区在线播放 | 国产精品国产三级国产在线观看 | 成人福利在线看 | 中文字幕一二三区芒果 | 国产高潮好爽好大受不了了 | 国产精品一区二区在线 | 成人电影毛片 | 国产精品18久久久久久久 | 亚洲国产精久久久久久久 | 99精品无人区乱码在线观看 | 久久久久久久久久久一区 | 久久久婷婷 | 性欧美一区 | 99欧美视频 | 国产女同疯狂激烈互摸 | 91av在线免费播放 | 精品国产一区二区三区四 | 成人一级片毛片 |