[VBA]VBA编写的时光倒流软件

目的:

目前有很多共享软件都有试用期,过了使用期后就不能使用了。但是把系统时间退回去又可以使用了。我们可以简单的利用VBA技术把系统时间该回去执行共享软件。

原理:

1.设定打开程序的路径

2.打开前取得系统时间

3.把系统时间调整到启动程序的安装时间到过期时间中的任意一个时间

4.把系统时间设置到启动前的时间。

5.把自动关闭设置为自动的话,下次启动的时间就会自动启动默认程序。

画面:

------------------------------------------------

閉じる: [自動  ▼]

[実行]   [・・・]   [C:/Windwos/notepad.exe ]

[実行]   [・・・]   [                 ]

[実行]   [・・・]   [                 ]

------------------------------------------------

ThisBook的代码:

Private Sub Workbook_Open()
    Dim sPath As String
    Dim execDate As String
   
    If Cells(5, 7).Value = "自動" Then
        sPath = Cells(7, 16).Value
        execDate = Cells(7, 11).Value
        If doExec(sPath, execDate) = True Then
            ThisWorkbook.Close
        End If
    End If
End Sub

------------------------------------------------------------------------------------------------------------------------------------

Sheet1的代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim sPath As String
    Dim execDate As String
   
    If Target.Cells(1, 1) = "実行" Then
        sPath = Cells(Target.Row, 16).Value
        execDate = Cells(Target.Row, 11).Value
        Call doExec(sPath, execDate)
    ElseIf Target.Cells(1, 1) = "・・・" Then
        sPath = Cells(Target.Row, 16).Value
        Call doGetPath(sPath)
        If sPath <> "" Then
            Cells(Target.Row, 16).Value = sPath
            ThisWorkbook.Save
        End If
    End If
   
    Cells(Target.Row, 2).Select
End Sub 

-----------------------------------------------------------------------------------------------------------------------------------

添加bas的代码:

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Function doExec(ByVal sPath As String, ByVal execDate As String) As Boolean
    Dim dCurrDate As Date
   
    On Error GoTo ERR_FUN
   
    dCurrDate = Date
   
    If Trim(execDate) = "" Then
        MsgBox "実行日付を設定してください。"
        doExec = False
        Exit Function
    ElseIf Trim(sPath) = "" Then
        MsgBox "実行プログラムのパスを設定してください。"
        doExec = False
        Exit Function
    End If
   
    Date = execDate
   
    Call Shell(sPath, vbMaximizedFocus)
   
    Date = dCurrDate
    doExec = True
   
    Exit Function
ERR_FUN:
    doExec = False
    MsgBox Err.Description
End Function

Sub doGetPath(ByRef sPath As String)
    Dim ofn As OPENFILENAME
    Dim rtn As String
   
    On Error GoTo ERR_FUN
   
    ofn.lStructSize = Len(ofn)
    'ofn.hwndOwner = Me.
    'ofn.hInstance = Me.Application.hInstance
    ofn.lpstrFilter = "*.exe"
    ofn.lpstrFile = Space(254)
    ofn.nMaxFile = 255
    ofn.lpstrFileTitle = Space(254)
    ofn.nMaxFileTitle = 255
    ofn.lpstrInitialDir = sPath
    ofn.lpstrTitle = "打開文件"
    ofn.flags = 6148
    rtn = GetOpenFileName(ofn)
   
    If rtn >= 1 Then
         sPath = ofn.lpstrFile
    Else
        sPath = ""
    End If
   
    Exit Sub
ERR_FUN:
    MsgBox Err.Description
End Sub

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值