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 [Link mogu videti samo ulogovani korisnici] 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


[Link mogu videti samo ulogovani korisnici]

[Link mogu videti samo ulogovani korisnici]

Ko je trenutno na forumu
 

Ukupno su 1593 korisnika na forumu :: 100 registrovanih, 9 sakrivenih i 1484 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 33 bren, ALFASPORTIVO, alternator, annon, ArchaBasha, Asprilja, Avalon015, Ba4e, babaroga, BB, blackjack, Bobrock1, bojan313, Bokiboks, Boris90, boromir, Boxy, BUDDAR70, bukefal, BWG, ccoogg123, Chainsaw, cifra, cojapop, d.arsenal321, dejanbenkovic, Dimitrise93, Djokislav, dragoljub11987, dule10savic, flash12, gobrad, GT, Iskander, IvanMiletic, Jakonjveliki, kingkong1947, Kobrim, krca73, Krusarac, Lester Freamon, Litostroton, LostInSpaceandTime, Lotus, luka35, M74AB3, majstro, Marko Marković, Marko1238, Martin543, Medojed, Mi lao shu, MiG-29M2, Miki 24pbr, milbos, mile.ilic75, milenko crazy north, milenko1980, milikonst, MILJEVINAC, milos.cbr, mir, nazgul75, nikoladim, niksa517, novator, nsharambasa, Panter, perko91, pisac12, Prečanin30, PrincipL, proka89, promajauglavi, radoznao, raso76, s0ne, S94, saputnik plavetnila, sekretar, Shadow soldier, sixpac, smerch, stagezin, stegonosa, Tihi86, tom, trademark1982, TRAVUNIJA, Tribal, Trivo, uruk, varda, Vlada1389, Vlado82, vojnik švejk, vukovi, XRF_d, zrno, šumar bk2