Komponenten registrieren mit Sub Main Verfasst am: 17.04.2008, 17:45
Thema: Komponenten registrieren mit Sub Main Autor: c0re
Ich erkläre euch in diesem Tutorial, wie ihr eure Komponenten registrieren (entpacken) könnt, bevor euer Startformular angezeigt wird.
Also, los geht's!
1. Der Resourcen Editor
Zuerst braucht ihr den Resourcen Editor. Den findet ihr unter Add-Ins.
Jetzt das Add-In laden und auch immer beim Starten von VB laden lassen.
Nun könnt ihr den Resourcen Editor mit diesem Icon verwenden.
Jetzt ladet ihr eure "CUSTOM" Resource mit diesem Tool.
Dieser Datei wird die ID 101 zugewiesen. Jetzt noch die Resource Datei abspeichern und dann kommen wir zum Code.
2. Sub Main
Die Sub Main ist ein Codeblock, den man als Startobjekt einstellen kann. Ihr macht euch nun ein neues Modul, in dem ihr alles Weitere platziert.
Die Sub beginnen wir natürlich mit dieser Zeile.
Code:
Sub Main()
Jetzt deklarieren/definieren wir den Pfad, in dem die OCX File später liegen soll, nämlich in system32
Code:
Dim MyPath As String<br />MyPath = Environ$("windir") & "system32" & "Name der OCX.ocx"
Der Name der Datei muss natürlich angepasst werden.
Jetzt laden wir den Inhalt der Resource in ein Byte Array. Hier braucht ihr auch die ID, welche der Datei zugewiesen wurde.
Code:
Dim MyData() As Byte<br />MyData = LoadResData(101, "CUSTOM")
Wir wollen ja, das die Resource nur entpackt wird, wenn sie noch nicht existiert, also fragen wir das vorher ab. Auf das benötigte Modul komme ich später noch einmal zurück.
Code:
If Not FileExists(MyPath) Then
Jetzt suchen wir uns einen freien Datenkanal, damit Bugs vorgebeugt werden.
Code:
Dim FF As Integer<br />FF = FreeFile
Nun öffnen wir den oben definierten Dateipfad und schreiben die Datei aus der Resource hinen.
Code:
Open MyPath For Binary As #FF<br />Put #FF, , MyData<br />Close #FF
Jetzt beenden wir die If Abfrage, denn die Form soll ja trotzdem geladen werden.
Code:
End If
Nun lasst ihr nur noch euer Startformular anzeigen (der Name muss natürlich angepsst werden) ...
Code:
Form1.Show
... und beendet die Sub (-Main).
Code:
End Sub
Jetzt macht ihr euch ein neues Modul, in dem ihr die FileExists Funktion zum Überprüfen der Existenz der Datei platziert.
Code:
Public Function FileExists(ByVal FileName As String) As Boolean<br />On Local Error Resume Next<br />FileExists = (Dir$(FileName) <> "")<br />End Function
Zum Schluss müsst ihr natürlich noch die Sub Main als Startobjekt festlegen.
Den kompletten Code für ein Modul hab ich euch auch noch mal geuppt. http://rafb.net/p/Dj6XkH31.nln.html Das wars auch schon. Ich hoffe ihr habt alles verstanden.
Gruß, Orbz _________________
nasuper Newbie
Anmeldedatum: 12.05.2008 Beiträge: 1
Verfasst am: 12.05.2008, 14:30
Da ist ein Fehler drin, wenn ich anmerken darf...
zitat: Open mypath For Binary As #FF Wenn die .ocx Datei dadrin nicht existiert kann sie ja auch nicht geöffnet werden...
mypath = Environ$("windir") & "system32"
so ist es richtig^^ korrigiert mich wenn ich falsch liege, aber so hats nicht geklappt
HaXx0r Tutorial Leser
Anmeldedatum: 01.05.2008 Beiträge: 25
Verfasst am: 12.05.2008, 15:12
da ist kein fehler drin, denn wenn sie nicht exisitiert, dann wird die datei eben erstellt.
Edit: Ich meinte meine Antwort jetzt bezogen auf "nasuper's" antwort, ZiG hat ihn ja jetzt aufgeklärt.
ZiG Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 421
Verfasst am: 13.05.2008, 07:23
Code:
Dim MyPath As String<br />MyPath = Environ$("windir") & "system32" & "Name der OCX.ocx"
Der Name der Datei muss natürlich angepasst werden.
Code:
If Not FileExists(MyPath) Then
Mehr sag ich nicht dazu. _________________
igoe Gast
Verfasst am: 21.05.2008, 09:28
Wieder ein Sehr gelungendes Tutorial ^^ Danke.....