Tutorial: Kako napraviti ActiveX DLL

Tutorial: Kako napraviti ActiveX DLL

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

DLLovi sluse kao dinamicke biblioteke koje programi pozivaju kada im je potrebna neka f-ja ili procedura i time smanjuju velicinu .exe fajla... isto tako ako radite u timu od nekoliko ljudi mozete da napisete DLL i drugi to da koriste, a da ne moraju da se bakcu oko celog koda za odredjeni zadatak nego jednostvano ukljuce DLL u projekat i koriste f-je i procedure iz DLLa...

mozete i da zastitite vas kod na taj nacin, posto mozete samo da izvrsavate f-je i procedure, ali nikako ne mozete da vidite kod...

elem, da mi krenemo sa tutorialom...


Pokrenite VisualBasic i izaberite ActiveX DLL kao vas projekat i stisnite na Open.

Otvorice vam se prozor Class1 koji pretstavlja klase koje ce vas dll da sadrzi... u jednom DLLu mozete imati klasa koliko hocete...

Pre nego sto pocnemo sa pisanjem f-ja i procedura moramo da definisemo kako ce da se zove klasa i kako ce se zvati projekat i kako ce biti prikazan.

Da bi promenili naziv projekta: Project > Project1 Properties >...

Upisite ime projekta kako zelite da se zove (ja sam stavio ActiveXDLL). Predjite na odeljak Make i tamo u polje Title pod grupom Application upisite ime projekta i kliknite na OK.

Kada ste to uradili upisite ime klase u koju cete upisivati f-je i procedure. Mozete da pravite koliko god zelite klasa, ali svaka klasa mora drukcije da se zove.

Sa strane, u Propertiesu klase u polju Name upisite npr. brStuff.

Sada cemo poceti sa pisanjem f-ja i procedura koje ce se nalaziti u ActiveX DLLu. Kao sto mozda znate, mozete da deklarisete lokalne i globalne promenljive (varijable). Sve ovo je isto kao da pisete neku proceduru ili f-ju unutar nekog standardnog .EXE projekta u Visual Basicu.

Napravicemo jednu f-ju koja ce izracunati dva broja. Nije korisna puno, ali cisto da vidimo kako se radi sa .dll-ovima.

Public Function saberi(jedan As Integer, dva As Integer) As Integer
saberi = jedan + dva
End Function

Kada ste zavrsili pisanje svih potrebnih f-ja i procedura onda mozete da predjete na kompajliranje klase ili klasa.

Kompajliranje se vrsi kao i svaki drugi projekat koji se radi u Visual Basicu. Znaci File > Make brStuff.dll. Otvorice vam se prozor gde vas pita gde cete da snimite vas kompajliran DLL.

Kada ste ovaj deo zavrsili, mozemo da predjemo na spajanje DLLa i EXE projekta.

Napravite standardni EXE Projekat i potom kliknite na OK.

Otvara vam se prazna forma. Sada moramo da ukljucimo novi dll. Idite na Project > References > Kliknite na Browse... i pronadjite ActiveX DLL koji ste upravo kompajlirali.

Sada ste ukljucili DLL u vas projekat i morate sada da napravite istancu objekta tj. da ga deklarisete kako bi ga mogli koristiti.

Dupli klik na formu i u padajucem meniju Form izaberite General.

Sada napisite kao bi deklarisali dll

Dim br As New ActiveXDLL.brStuff

Primerite da je ActiveXDLL ime projekta koji smo zadali jos na pocetku, a brStuff je ime jedne klase koju imamo u DLLu

Dodajte jedan TextBox i jedan CommandButton u projekat iz palete alatki.

Dupli klik na CommandButton i tu ubacite sledeci kod

Text1.Text = br.saberi (12,14)

Kod treba ovako da izgleda:

Private Sub CommandButton_Click()
Text1.Text = br.saberi (12,14)
End Sub

primeticete kada budete napisali br. da ce se otvoriti dropdown menu sa spisakom svih f-ja i procedura koje imate u instanciranoj klasi (u ovom slucaju samo saberi).

Sada samo pokrenite program i vidite da li radi.

U sledecem broju "ADO & Konekcija prema Access bazi" u izdanju Mikro knjige... ovaj u mom izdanju Very Happy

Preuzeto iz mog .pdf tutorijala "Kako napraviti ActiveX DLL"



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 30 Maj 2005
  • Poruke: 51
  • Gde živiš: Nova Pazova

Prilikom pokretanja slicnog programa pojavi se poruka o greki :
Object variable or With block variable not set.

Pardon, ipak je sve Ok. Bio je moj previd.



offline
  • Pridružio: 06 Maj 2007
  • Poruke: 241
  • Gde živiš: Beograd

U forumu elite security u temi http://www.elitesecurity.org/t52038-Zna-li-neko-ko.....-harddiska a i na ovom forumu dao sam tudj kod sa klasom koja daje fabricki serijski broj hard diska. U svakom programu umesto te klase mozemo koristiti dll fajl koji je dobiven od te klase.

Postupak je sledeci:

U neki folder iskopiramo i razvijemo zip fajl "FabrSerBrDiska-cls.zip" sa klasom.

Postupak za dobivanje dll fajla od te klase je sledeci:

1. Startujemo VB6 i sa File/New project/ActiveX DLL odaberemo ActiveX DLL kao novi projekat
2. Desnim klikom u prozoru Projecta na klasu Class1, pa na Remove Class1.cls uklanjamo klasu
3. Preko Project/Add File izaberemo klasu HDSN.cls
4. Kliknemo na klasu HDSN u prozoru projekta i osobinu Instancing sa 1 - Private promenimo na 6 - GlobalMultiUse
5. Klikom na Project1 u prozoru projekta promenimo osobinu Name Project1 u npr. Name FabrSerBrDiska
6. Sa File/Make Project dll... napravimo dll fajl pod imenom npr. FabrSerBrDiska
7. Sada ucitamo vbp fajl iz primera.
8. Desnim klikom u prozoru Projecta na klasu HDSN, pa na Remove HDSN.cls uklanjamo klasu
9. Preko Project/References, pa preko browse pronadjemo FabrSerBrDiska.dll, kliknemo na Open pa na OK
10. Sada u kodu Form1, u General Declarations umesto:

Dim h As HDSN

napisemo:

Dim h As New FabrSerBrDiska.HDSN

I to je to.

Sada taj dll fajl mozemo koristiti u bilo kom programu, pre toga ga moramo registrovati sa:

REGSVR32 FabrSerBrDiska.dll


https://www.mycity.rs/must-login.png

https://www.mycity.rs/must-login.png

Ko je trenutno na forumu
 

Ukupno su 663 korisnika na forumu :: 41 registrovanih, 5 sakrivenih i 617 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, _Sale, amaterSRB, bojank, Boris90, darkangel, Doca, doom83, dragon986, Drug pukovnik, Faki-Valjevo, galijot, goxin, gringo22, Groucho, HrcAk47, ikan, ivica976, Konda, kovinacc, MarKhan, Marko Marković, MB120mm, mercedesamg, Mercury, Milan A. Nikolic, milenko crazy north, Misirac, nemkea71, Regrut Boskica, robertino, rovac, samsung, Sirius, Snorks, spektorsky, VJ, vlvl, voja64, Warhawk, zixmix