Come creare applicazioni che possono fornire servizi ad altre applicazioni tramite le Ole, creando estensioni in formato DLL

Da VB 4.0 è disponibile nel menù file una voce con la quale è possibile creare DLL. Le DLL create con VB 4.0 non sono delle consuete DLL che poi si possono utilizzare con le normali dichiarazioni all’interno di un modulo, sono in realtà delle DLL Server-OLE. Un Server-OLE non è altro che una applicazione che mette a disposizione ad altri applicativi degli oggetti con relativi metodi e proprietà, in pratica delle vere e proprie estensioni per più applicativi. In questo articolo si potrà vedere come realizzare una semplicissima applicazione Server-OLE che visualizzerà un form di informazioni, con lo stesso procedimento è possibile creare applicazioni più complesse. In una qualsiasi applicazione VB il componente di avvio è solitamente un Form, in un Server-OLE invece si deve necessariamente partire da una procedura di nome Main. Questa procedura deve risiedere in un modulo standard e non è necessario che sia presente del codice. La procedura Main deve comunque esistere e deve essere del tipo Sub, quindi si dovrà inserire nel progetto un modulo standard tramite il menù Inserisci e creare una procedura Main.

Sub Main()

End Sub

Visto che l’OLE-Server che si intende creare dovrà visualizzare sul desktop una finestra di informazioni si procederà ad inserire nel progetto un form. Alla proprietà Name del form si assegnerà il nome frmInfo, si imposterà BorderStyle a 3 – Fixed Dialog e si darà un titolo al form attraverso la proprietà Caption, in questo caso Informazioni. Una volta messo a punto l’aspetto ed il comportamento del form, si dovrà inserire dentro di esso una Label ed un CommandButton. Alla label si assegnerà il nome lblInfo, sempre tramite la proprietà Name, e al commandbutton il nome cmdOk. All’interno dell’evento Click del commandbutton si dovrà inserire l’istruzione per scaricare il form stesso. Il codice potrebbe essere :

Private Sub cmdOk_Click

Unload Me

End Sub

 

Una volta impostato il form si dovrà utilizzare un nuovo tipo di modulo, il modulo di classe, inserendolo nel progetto tramite il menù Inserisci. Quello che apparirà a prima vista sembrerà un qualsiasi modulo standard, ma vi sono significative differenze. Se si guarda la lista delle proprietà, che si può richiamare tramite il tasto F4, si potrà vedere oltre alla proprietà Name anche la proprietà Istancing e Public. Se si scorre la listbox Object, quella presente sulla sinistra del modulo stesso, si potrà notare che contiene un oggetto di nome Class e che questo oggetto possiede due eventi: Initialize e Terminate. C’è anche da sottolineare che il modulo di classe è gestibile come un oggetto all’interno, o all’esterno, dell’applicazione. Per procedere si dovrà assegnare alla proprietà Name un valore che corrisponderà al nome del modulo di classe, in questo caso Informazioni. Poi alla proprietà Istancing si dovrà impostare il valore 2 – Creatable MultiUse e si dovrà fare in modo che la proprietà Public sia impostata a True. La proprietà Istancing serve a stabilire se si possono o meno creare nuove istanze dell’oggetto, e se l’oggetto può essere condiviso da più d’una applicazione. La proprietà Public serve ad esporre la classe, a renderla disponibile alle altre applicazioni. Una classe non pubblica, proprietà Public impostata su False, potrebbe essere utilizzata solo all’interno dell’applicazione dove risiede. Gli eventi Initialize e Terminate si verificano quando viene creata una istanza d’oggetto o quando viene distrutta. Per completare l’OLE-Server accorre creare almeno una proprietà ed un metodo all’interno del modulo di classe. La proprietà ci servirà per inviare dall’applicazione client del testo al server. Il metodo per far comparire il form. Quindi si inserirà una procedura di tipo Public Property con nome Caption, attraverso il menù Inserisci. Questa operazione crea due proprietà, una di tipo Let e una di tipo Get. La prima serve per scrivere il valore della proprietà, la seconda per leggerlo. Si dovrà cancellare la proprietà di tipo Get, in questo modo sarà a sola scrittura. All’interno della procedura si dovrà inserire l’istruzione per assegnare il valore impostato alla proprietà nella label contenuta nel form. Il codice dovrà apparire in questo modo:

Public Property Let (vNewValue as String)

frmInfo.lblInfo.Caption = vNewValue

End Sub

 

Una volta completata la proprietà si potrà accertare la sua presenza attraverso il Visualizzatore oggetti del menù Visualizza. Procedendo si dovrà aggiungere un metodo, e per farlo si inserirà una Sub di nome Show. All’interno della procedura si dovrà scrivere l’istruzione per visualizzare il form. Il codice dovrà apparire in questo modo:

Public Sub Show

frmInfo.Show

End Sub

In questo modo la classe controllerà alcune caratteristiche del form. Dato che il form non può essere visto e gestito dall’esterno come un oggetto ed invece la classe permette di essere visibile, verrà creato un nuovo oggetto gestibile dall’esterno che controlla un form. E da notare che ogni proprietà e metodo sono di tipo Public. Se tali metodi o proprietà non fossero di tipo Public sarebbero visibili esclusivamente all’interno del modulo di classe.

Per proseguire si dovranno modificare alcuni attributi del progetto chiamando dal menù Strumenti il comando Opzioni, spostandosi poi sulla pagina Progetto presente nella finestra visualizzata. In Form di avvio si dovrà impostare il valore Sub Main, in Nome progetto si dovrà impostare un nome idoneo, in questo caso MyOleSvr. In una applicazione standard questo attributo non ha alcuna importanza, in una applicazione OLE-Server è assolutamente fondamentale per poter richiamare il server da un’altra applicazione. L’attributo Modalità avvio non ha alcuna rilevanza una volta creata la DLL, è invece importante se si vuole testare il server durante lo sviluppo. Poiché in VB 4.0 è possibile lanciare più istanze dell’ambiente di sviluppo, è possibile provare un’applicazione OLE-Server senza averne creato la DLL. In questo caso bisognerà scegliere l’opzione Server OLE. L’attributo Descrizione applicazione, aggiunge una frase di descrizione al server. Questo attributo non ha nessuna reale incidenza sul funzionamento, ma serve per comunicare agli utilizzatori del componente il nome e la versione del server.

Dopo questi ultimi ritocchi si potrà compilare il progetto.

L’OLE-Server per essere richiamato da altri applicativi deve essere registrato nel sistema. Quando si crea la DLL il VB procederà automaticamente a registrare l’OLE nel sistema, oppure si potrà utilizzare l’applicazione REGSVR32.EXE presente nei TOOLS aggiuntivi del VB, distribuiti assieme al VB stesso. Per verificare che l’OLE-Server sia stato registrato correttamente nel sistema, basterà lanciare REGEDIT (l’applicazione che permette di editare il database di registrazione del sistema) e cercare con un Find l’OLE creata, ovvero la stringa MyOLESvr.

Per usare l’OLE-Server, si dovrà creare un nuovo progetto VB. Si dovrà anche verificare che nella lista dei riferimenti, che è possibili richiamare attraverso il menù Strumenti alla voce Riferimenti, compaia l’OLE-Server creato e che sia abilitato. Nel form del nuovo progetto si dovrà inserire un pulsante. Si dovranno assegnare le proprietà essenziali sia al form che al pulsante. Nell’evento Click di quest’ultimo si procederà alla scrittura delle istruzioni per utilizzare l’OLE-Server. E’ possibile procedere in due modi:

Dim MyInfo As New MyOLESvr.Informazioni

MyInfo.Caption = "Hello!"

MyInfo.Show

oppure

Dim MyInfo As Object

Set MyInfo = CreateObject("MyOLESvr.Informazioni")

MyInfo.Caption = "Hello!"

MyInfo.Show

Quest’ultima si differenzia dal fatto che se l’OLE-Server non è stato registrato correttamente, l’istruzione CreateObject genererà un errore intercettabile con un On Error …, a differenza della prima che non genera errori fintanto che non si utilizzerà un metodo o una proprietà dell’OLE-Server.

Ci sono però delle limitazioni durante la programmazione di OLE-Server. Queste informazioni possono essere lette attraverso l’Help del VB.

Both comments and pings are currently closed.

Comments are closed.