• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        如何創建文件關聯

        如何創建文件關聯

        更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

        文件關聯是指打開一種類型的文件的默認方式比如默認狀態下文本文件txt是與記事本程序相關聯的我們雙擊文本文件就能直接運行記事本程序來編輯它。文件的關聯是通過注冊表得以實現的本例就是利用API函數RegCreateKey和RegSetValue來對注冊表進行修改從中可以看到這兩個函數的用法。

          --------------------------------------
          利用WinApi函數實現文件關聯
          --------------------------------------
          程序說明:
          例中利用兩個API函數RegCreateKey和
          RegSetValue修改注冊表中的相應鍵值
          實現某一類型文件.log同一個應用程序
          notepad.exe的關聯.
          --------------------------------------
          說明&作為數據類型的標示而不是“與”運算符
          &指Long長整型數據其范圍從 -2,147,483,648 到 2,147,483,647。Long 的類型聲明字符為和號 (&)。

          當關聯按鈕被按下時讀寫注冊表完成 .log 文件和 記事本Notepad 的關聯
          如果你對注冊表的結構和使用不熟悉的話可以參看“電腦樂園”中的相關教程

        Private Sub Command1_Click()
        If CmdPressed = True Then Exit Sub

          Dim sKeyName As String 鍵的名稱
          Dim sKeyValue As String 鍵值
          Dim ret& 返回錯誤信息的變量
          Dim lphKey& 此變量用來保存創建的鍵的句柄

          實際效果是在注冊表的HKEY_CLASSES_ROOT下創建MyApp目錄
          sKeyName = "MyApp" *名為MyApp的鍵名
          sKeyValue = "Logfiles" *把鍵值設為"Logfiles"
          在HKEY_CLASSES_ROOT中創建名為sKeyName的鍵并返回句柄lphKey&
          ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
          向句柄lphKey&所指的位置寫入鍵值sKeyValue
          ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

          在注冊表的HKEY_CLASSES_ROOT下創建另外一個目錄 .log
          sKeyName = ".log" *名為.log的鍵名
          sKeyValue = "MyApp" *把鍵值設為"MyApp"

        ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
        ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

          為“MyApp”設置了一個命令行
          sKeyName = "MyApp" *名為MyApp的鍵名
          sKeyValue = "notepad.exe %1" *把鍵值設為"notepad.exe %1"如果你知道DOS下的.Bat文件的語法的話便知%1指的是要打開的文件
          如果該鍵已經創建則RegCreateKey那么函數會打開現有的項
          ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
          下面一句的實際效果是在MyApp鍵下建立shell\open\command目錄并寫入鍵值sKeyValue
          說明:放在一個鍵的shell\open\command下的是打開某一類型文件的應用程序的名稱
          ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)

          Command1.Caption = "關聯已經創建"



        Command1.Enabled = False
        CmdPressed = True
        End Sub

        Private Sub Form_Load()
        CmdPressed = False
        End Sub  

          以下是模塊文件中的代碼:

        Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)

        【VB聲明】

        Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
        【說明】
        在指定的項下創建一個新項。如指定的項已經存在那么函數會打開現有的項

        【返回值】
        Long零(ERROR_SUCCESS)表示成功。其他任何值都代表一個錯誤代碼

        【參數表】
        hKey ----------- Long要打開項的句柄或者一個標準項名

        lpSubKey ------- String欲創建的新子項?赏瑫r創建多個項只需用反斜杠將它們分隔開即可。例如level1\level2\newkey

        phkResult ------ Long指定一個變量用于裝載新子項的句柄

        Declare Function RegSetValue& Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&)

        【VB聲明】

        Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

        【說明】
        設置指定項或子項的默認值

        【返回值】
        Long零(ERROR_SUCCESS)表示成功。其他任何值都代表一個錯誤代碼
        【參數表】
        hKey ----------- Long一個已打開項的句柄或指定一個標準項名

        lpSubKey ------- String欲對它的值進行設置的一個子項的名字。如指定vbNullString表示設置hKey的默認值。如指定的子項不存在則會創建它

        dwType --------- Long必須是REG_SZ

        lpData --------- String新值

        cbData --------- Long指定lpData的長度不包括空中止字符


        Public Const ERROR_SUCCESS = 0&
        Public Const ERROR_BADDB = 1&
        Public Const ERROR_BADKEY = 2&
        Public Const ERROR_CANTOPEN = 3&
        Public Const ERROR_CANTREAD = 4&
        Public Const ERROR_CANTWRITE = 5&
        Public Const ERROR_OUTOFMEMORY = 6&
        Public Const ERROR_INVALID_PARAMETER = 7&
        Public Const ERROR_ACCESS_DENIED = 8&
        Global Const HKEY_CLASSES_ROOT = &H80000000
        Public Const MAX_PATH = 256&
        Public Const REG_SZ = 1
          我們先來聲明API函數本例中用到的兩個函數聲明如下:



           Private Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&) As Long

           Private Declare Function RegSetValue& Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&) As Long  

          RegCreateKey函數的作用是在注冊表中指定的主鍵下創建一個新的主鍵而如指定的鍵已經存在那么函數會打開現有的主鍵其中各個參數的意義如下表所示:

          參數 意義
        hKey Long 要打開鍵的句柄或者一個標準鍵名。例如:HKEY_CLASSES_ROOT 是標準鍵名
        lpSubKey String 欲創建的新子鍵。如創建多個鍵需用反斜杠將它們分隔開。例如:level1\newkey  
        phkResult Long 指定一個變量用于得到新子鍵的句柄在設置鍵值時要用到它
        返回值 Long 零(ERROR_SUCCESS)表示成功。其他任何值都代表一個錯誤代碼  

          RegSetValue函數用于設置指定鍵或子鍵的默認值它的各個參數的意義如下:

        參數 意義
        hKey Long 一個已打開鍵的句柄可從上面phkResult得到或是指定一個標準鍵名
        lpSubKey String 要設置鍵值的一個子鍵的名字。如指定vbNullString表示設置hKey的默認值。如指定的子鍵不存在則會創建它
        dwType Long 必須是REG_SZ
        lpData String 新的鍵值
        cbData Long 指定lpData的長度不包括空中止字符
        返回值 Long 零(ERROR_SUCCESS)表示成功。其他任何值都代表一個錯誤代碼

          下面我們看看怎樣實現文件關聯步驟一:在在注冊表的HKEY_CLASSES_ROOT下創建MyApp主鍵:

           ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
          語句中sKeyName已經預先賦值為"MyApp"而函數執行完后lphKey&會返回新創建的主鍵的句柄然后我們向句柄lphKey&所指的位置寫入鍵值sKeyValue(已經賦值為"Logfiles")

           ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

          如果這時查看注冊表會發現如下圖所示的新主鍵和鍵值:

          步驟二:在注冊表的HKEY_CLASSES_ROOT下創建另外一個主鍵鍵名為“.log”鍵值為“MyApp”創建的方法與第一步相同只不過鍵名和鍵值不同。建立此鍵值的作用是把“.log”文件關聯到“MyApp”主鍵所規定的內容這時的注冊表如下:

          第三步:我們為“MyApp”設置了一個命令行也就是在主鍵MyApp下建立如下主鍵:

          實現的代碼是:

           sKeyName = "MyApp"        *名為MyApp的鍵名
           sKeyValue = "notepad.exe %1"   *把鍵值設為"notepad.exe %1"%1指的是要打開的文件
              如果該鍵已經創建則RegCreateKey那么函數會打開現有的項
           ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
              下面一句的實際效果是在MyApp鍵下建立shell\open\command目錄并寫入鍵值sKeyValue
              說明:放在一個鍵的shell\open\command下的是打開某一類型文件的應用程序的名稱
           ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)

          經過以上幾個步驟我們已經建立了“.log”文件和“記事本”程序的關聯?偨Y前面的內容可以發現在VB中采用API對注冊表操作的基本思路都是類似的只要我們知道了兩個API函數的用法然后熟悉注冊表操作就能靈活的寫出與注冊表相關的程序來。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 日本v片免费一区二区三区| 免费在线观看亚洲| xxxx日本免费| 成年免费大片黄在线观看岛国| 日本无吗免费一二区| 中文字幕亚洲情99在线| 亚洲国产免费综合| 13一14周岁毛片免费| 免费国产成人午夜电影| 亚洲AV女人18毛片水真多| 久久久久久免费一区二区三区| 成人最新午夜免费视频| 日韩精品亚洲aⅴ在线影院| 亚洲国产美女精品久久| 国产真人无码作爱免费视频| 日本特黄特黄刺激大片免费| 国产精品亚洲lv粉色| 成熟女人特级毛片www免费| 亚洲欧美日韩一区二区三区在线| 无码国产精品一区二区免费模式 | 国产拍拍拍无码视频免费| 亚洲精品午夜无码专区| 久久精品亚洲日本波多野结衣| 免费高清在线爱做视频| 亚洲伊人久久大香线蕉在观 | 免费国产在线精品一区| 一二三四免费观看在线视频中文版| 亚洲av乱码一区二区三区香蕉| 99视频在线观看免费| 99人中文字幕亚洲区| 一区二区三区AV高清免费波多| 成年人在线免费看视频| 免费人成大片在线观看播放电影| 亚洲中文字幕无码日韩| 88xx成人永久免费观看| 亚洲欧洲日韩不卡| 免费毛片a线观看| 亚洲乱码在线观看| 亚洲综合色区在线观看| 五月婷婷免费视频| 亚洲日本视频在线观看|