DLL maken en gebruikenb in VB6

Status
Niet open voor verdere reacties.

buick

Terugkerende gebruiker
Lid geworden
6 sep 2001
Berichten
2.879
Hallo,

Ik ben al een tijdje bezig met VB6 maar wil ook graag met DLL files gaan werken, zodat ik bepaalde standaardfuncties die ik vaak gebruik, kan aanroepen via DLL (en dus ook kan delen met anderen zonder direct de source te geven)

Ik merk echter dat VB 6 geen mogelijkheid heeft om een dll te maken.
Het moet een DLL worden waarin ik een functie kan aanroepen (met strings) en die ook weer een string terug kan geven (soort lookup tabel)

Heeft iemand een idee waar ik moet beginnen? :)

Alvast bedankt
 
Hoe maak je zo'n DLL? Start Visual Studio 2005 Express VB.NEt Edition op, maak een nieuw project van het Type Class Library, maak je code, compile het, en je hebt je DLL ;)

in je scriptinfo.xml zet je het volgende:
Code:

<DotNetFiles>
<FileName>ExtraFuncVB.dll</FileName>
</DotNetFiles>



Zelf moet je in je project build opties ff zoeken naar Register for COM Interop. Nu wordt je DLL geregistreerd op je computer, en kan je in je MSN Plus script je object maken op de volgende manier:

Code:

var vb_object = new ActiveXObject('namespace.class');
vb_object.function();
 
Bertus,
Ik werk helaas niet met VB.net maar met VB6 en die heeft deze optie niet. (tenzij er verborgen functies zitten die ik niet ken)
Dus wordt het al een stuk lastiger.
 
Het is mij inmiddels (na enig zoekwerk) gelukt om een DLL te maken vanuit VB6. :D

Alleen lijk ik nu verplicht om de DLL ook in de Windows\system32 map te zetten óf het pad naar de DLL te hardcoden in mijn source; iets wat niet verstandig is omdat men dan vastzit aan één bepaalde map wara de software staat.

Weet iemand toevallig hoe ik mijn dll kan laten werken als hij in de map staat waar ook de exe staat?

Ik heb dit geprobeerd :

Code:
Public Declare Function Calculate Lib App.Path &  "testje.dll" ( _
                        value As Integer) As Integer

Maar ik schijn daar App/Path niet te mogen gebruiken.

En aangezien het de bedoeling is dat mijn applicatie ook werkt bij gebruikers die geen ADMIN zijn, is plaatsen in de windows of system32 map ook geen optie.

Iemand nog een suggestie? :eek:
 
Hoi buick,

Lang leve vb6! :thumb:
Heb zelf ooit maar één dll gemaakt in vb6. Zag het nut er verder niet van in. Vind het zelf doeltreffender klassen te maken voor de functies/methoden die ik vaak gebruik. Indien je echter functies wilt aanroepen vanuit vba (ipv vb) kan een dll wel zinvol zijn.
De dll kan in iedere willekeurige map worden geplaatst. Bij het registreren van de dll op het systeem van de gebruiker wordt de lokatie ervan hard weggeschreven in het desbetreffende windows register. Je kunt de dll aanroepen in je programma door een referentie te plaatsen (z.g. early binding) naar de dll in het menu project/references (of in office: in de vba editor onder tools/references (in nederlands waarschijnlijk extra/referenties)).
In je code zelf roep je de dll als volgt aan:

Private Sub Command1_Click()
Dim myDLL As TheDll.Something
Set myDLL = New TheDll.Something
myDLL.Uitvoeren
Set myDLL = Nothing
End Sub

Hoop dat je hier wat aan hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan