So ich möchte hiermit mal antworten auf meine eigenen Fragen geben.
Da ich schon einmal fragte, ob und wie man ein Access Programm patchen kann, und diesbezüglich viel ungewissheit bestand, möchte ich jetzt meine erarbeitete Lösung vorstellen.
Als Beispiel warum ich Patchen wollte, ein Programm das wie eine Trial-Version nach 30 Tagen abläuft, und über einen Patch, in diesem Fall eine Textdatei die aus dem Programm heraus eingelesen, verlängert wird.
(Teilkonstrukte sind übrigens aus Beiträgen dieser, und anderer Foren, also nicht mein Werk. Ich habe lediglich etwas modifiziert und ergänzt)
Der Code:
Private Sub activate_bt_Click()
'Einlesen einer beliebigen Datei, Inhalt kommt in die Variable "sInhalt"(Diese
' muss je nach 'Verwendung, in meinem Fall Global deklariert sein)
Dim dlgOpen As FileDialog
Dim patchDatei As String
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
'(Verweis setzten auf Microsoft Office 11.0 Object Libary im Visual Basic
' Editor -> Extras --> Verweise)
With dlgOpen
.AllowMultiSelect = False
.Show
On Error Resume Next
patchDatei = .SelectedItems(1)
If Err <> 0 Then
MsgBox "Es wurde keine Datei ausgewählt", _
vbInformation + vbOKOnly, "Titel"
Else
Dim F As Integer
F = FreeFile: Open patchDatei For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close #F
On Error GoTo 0
patch
MsgBox "Die Nutzungsphase wurde erfolgreich verlängert.", _
vbInformation, "Hinsweis"
DoCmd.Close
DoCmd.OpenForm "Hauptmenu"
End If
End With
End Sub
'Die Patch-Funktion sucht nach dem zu ändernden Code, über ein String-Kriterium
' in einem angegebendem
'Modul. Bei Findung wird es dann durch den Code aus der Text-Datei ersetzt
Sub patch()
With Application.VBE.ActiveVBProject.VBComponents.Item("Start").CodeModule
Dim z As Long, s As Long
If .Find("expire_date =", 1, 1, z, s, False, False) Then
.ReplaceLine z, sInhalt
End If
End With
End Sub Vielleicht interessiert es ja jemanden, auf diese Art und Weise kann man Code von außen in ein Access Programm einbringen, zumindest in eine MDB, ob es bei einer MDE allerdings funktioniert, weis ich nicht.
Mfg
Beitrag wurde zuletzt am 24.11.09 um 14:53:57 editiert. |