• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VB6.0編寫自我升級的程序(三)

    發布: 2007-7-01 21:48 | 作者: admin | 來源: | 查看: 15次 | 進入軟件測試論壇討論

    領測軟件測試網

     

    VERSION 5.00

    Begin VB.Form frmUpdate

       BackColor       =   &H80000007&

       BorderStyle     =   0  ´None

       Caption         =   "Form1"

       ClientHeight    =   1185

       ClientLeft      =   0

       ClientTop       =   0

       ClientWidth     =   5400

       LinkTopic       =   "Form1"

       MaxButton       =   0   ´False

       MinButton       =   0   ´False

       ScaleHeight     =   1185

       ScaleWidth      =   5400

       ShowInTaskbar   =   0   ´False

       StartUpPosition =   2  ´屏幕中心

       Begin VB.CommandButton Command1

          Appearance      =   0  ´Flat

          Caption         =   "關閉"

          Height          =   435

          Left            =   2130

          TabIndex        =   0

          Top             =   630

          Visible         =   0   ´False

          Width           =   1245

       End

       Begin VB.Label lblCap

          AutoSize        =   -1  ´True

          BackStyle       =   0  ´Transparent

          BeginProperty Font

             Name            =   "宋體"

             Size            =   12

             Charset         =   134

             Weight          =   400

             Underline       =   0   ´False

             Italic          =   0   ´False

             Strikethrough   =   0   ´False

          EndProperty

          ForeColor       =   &H000000FF&

          Height          =   240

          Left            =   330

          TabIndex        =   1

          Top             =   150

          Width           =   120

       End

       Begin VB.Shape Shape1

          BackColor       =   &H00C0FFFF&

          BackStyle       =   1  ´Opaque

          BorderColor     =   &H0000FF00&

          Height          =   1065

          Left            =   60

          Top             =   60

          Width           =   5265

       End

    End

    Attribute VB_Name = "frmUpdate"

    Attribute VB_GlobalNameSpace = False

    Attribute VB_Creatable = False

    Attribute VB_PredeclaredId = True

    Attribute VB_Exposed = False

    Option Explicit

     

    ´ ------------------------------------------

    ´ 升級程序的例子

    ´ 作者:   謝家峰

    ´ 日期:   2003/12/19

    ´

    ´ 這里是升級程序

    ´

    ´ ------------------------------------------

     

    Dim State As Boolean

     

    Private Sub Command1_Click()

      Unload Me

    End Sub

     

    Private Sub Form_Activate()

     

      Dim i As Integer

      Dim j As String

     

      Dim OldExeFile As String

      Dim NewExeFile As String

     

      Dim tmpFile As String

      Dim MainState As Boolean

     

     

      DoEvents

       

      If State Then

         ´ 獲取舊主程序名稱

         OldExeFile = CStr(ReadIniFile(UpdateIniPath, "Main", "Name", "主程序"))

         NewExeFile = OldExeFile

         OldExeFile = App.Path & "\" & OldExeFile & ".exe"

         tmpFile = App.Path & "\tmp.tmp"

        

         ´ 改寫升級次數

         i = CInt(ReadIniFile(UpdateIniPath, "Update", "Num", "0"))

         i = i + 1

         ChangeLabelPos Me, lblCap, "這是您第" & i & "次升級!"

         Sleep 1500

        

         ´ 摸擬從網站下載新的更新程序。

         ChangeLabelPos Me, lblCap, "正在 摸擬從網站下載新的升級程序 ..."

         Sleep 1000

         On Error Resume Next

         Kill tmpFile

         ´ 此處可以修改為將臨時文件放在臨時文件夾內

         SaveFileFromRes 101, "CUSTOM", tmpFile

         Sleep 1000

         On Error GoTo 0

        

         ´ 檢查主程序是否開啟,若開啟則關閉舊程序

         MainState = CBool(CInt(ReadIniFile(UpdateIniPath, "Main", "Active", "0")))

         If MainState Then

           ´ 關閉舊程序

           ChangeLabelPos Me, lblCap, "正在關閉舊程序 ... "

           Sleep 300

          

           ´ 這里強行關閉舊程序

           ´ 你也可以發送消息,讓舊程序自己關閉

           Do While -1

              DoEvents

              If CloseValidForm(NewExeFile) Then

                 Exit Do

              End If

           Loop

           Sleep 200

         End If

        

         ´ 刪除舊程序

         On Error Resume Next

         ChangeLabelPos Me, lblCap, "正在刪除舊程序 ... "

         Sleep 1000

         Kill OldExeFile

         Sleep 1000

        

        

         ´ 生成新主程序名稱

    ´     NewExeFile = CStr(ReadIniFile(UpdateIniPath, "Main", "Name", "主程序"))

         j = Right(NewExeFile, 1)

         If IsNumeric(j) Then

            j = i

            NewExeFile = Left(NewExeFile, Len(NewExeFile) - 1)

         Else

            j = 1

         End If

         ´ 記錄主程序的名字

         NewExeFile = NewExeFile & j

         WritePrivateProfileString "Main", "Name", NewExeFile, UpdateIniPath

         NewExeFile = App.Path & "\" & NewExeFile & ".exe"

        

        

         ´ 拷貝新程序

         ChangeLabelPos Me, lblCap, "正在更新程序 ... "

         Sleep 1000

         FileCopy tmpFile, NewExeFile

         Sleep 1000

         ´ 刪除臨時程序

         Kill tmpFile

        

         ´ 記錄更新次數

         WritePrivateProfileString "Update", "Num", CStr(i), UpdateIniPath

        

         ´ 檢查舊程序的狀態

         If MainState Then

            ChangeLabelPos Me, lblCap, "正在啟動更新后的主程序 ... "

            Sleep 1000

            Shell NewExeFile, vbNormalNoFocus

         End If

        

         ´ 關閉更新程序

         Command1.Visible = True

         ChangeLabelPos Me, lblCap, "更新完成,請等待 3 秒后將自動關閉更新程序 ..."

         Sleep 3000

         lblCap.Refresh

        

         Unload Me

      End If

    End Sub

     

    Private Sub Form_Load()

     

      If App.PrevInstance Then End

     

      UpdateIniPath = App.Path & "\Update.ini"

      State = True

    End Sub

     

     

    完成了三個工程的代碼拷貝,在代碼的必要之處我都進行了詳細注釋,這里我就不再介紹代碼了,現在進行最后一步,模擬從網站下載升級后的程序。

    a.        打開projMain.vbp,編譯該工程,并且命名為“主程序.exe”;

    b.        打開projNewMain.vbp,編譯該工程,并且命名為“projNewMain.exe”;

    c.        打開projUpdate.vbp,打開工具欄上的“vb資源編輯器”(若沒找到,讀者需要點擊菜單“外接程序|外接程序管理器”,在打開的對話框中選擇“vb6資源編輯器”,在加載行為中選擇“加載/卸載”復選框),在資源編輯器中選擇“添加自定義資源 …”,在打開的對話框中定位到Update文件夾,選擇projNewMain.exe文件,保存該資源文件,最后編譯該工程并且命名為“Update.exe”。

    d.        將可執行文件“主程序.exe”、“Update.exe”拷貝到同一個文件夾中,運行任一個程序,相信讀者會看到效果。

     

    以上代碼比較簡單,僅供讀者分析思路用。在實際工程中的代碼編寫時也根本沒必要把projNewMain.exe放在資源文件中,讀者只需將它放在服務器的某個位置,然后在projUpdate.vbp中的相應處寫下載代碼即可。

    Ok,文章至此編寫完成,希望對各位讀者能有所幫助。

     

    附:本人已在CSDN上發布了源碼,等管理員審核完畢,本人再將鏈接地址補上。

     


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>