2012-03-23 21 views
8

Ho compilato codice C# in una DLL, ma ho poca esperienza con loro. Il mio codice C# contiene una classe HelloWorld con un metodo statico Print(). Mi piacerebbe utilizzare questa DLL in VBScript per chiamare il metodo Print(). So che questo è di base, ma sto usando questo come test per un progetto su larga scala che verrà compilato alla DLL alla fine. Come si presenta la dichiarazione e come apparirebbe la chiamata al metodo?Utilizzo di DLL in VBScript

+1

possibile duplicato di [Come chiamare la funzione DLL C# da VBScript] (http://stackoverflow.com/questions/769332/how-to-call-c-sharp-dll-function-from-vbscript) – JeffO

+0

Ho fatto controlla quel link, ma non arriva a quello che voglio. Sto cercando di caricare dinamicamente la DLL in fase di runtime tramite VBScript da un determinato percorso file piuttosto che registrarsi con il server. Ancora una volta, le DLL sono molto nuove per me, quindi questo potrebbe essere ciò che sta accadendo in quella risposta, io proprio non lo vedo. – steventnorris

risposta

17

Se il dll è registrato con il sistema, utilizzare CreateObject con il suo ProgID.

Set myObject = CreateObject("MyReallyCoolObject.HelloWorld") 
myObject.Print 

Se l'oggetto non viene registrato nel sistema, utilizzare GetObject con un percorso del file che contiene l'oggetto. Assicurati che il tuo oggetto esponga l'interfaccia corretta. (Il secondo parametro è opzionale. Qui è possibile fornire un nome classe se l'oggetto espone più di uno.)

Set myObject = GetObject("C:\some\path\helloworld.dll", "appname.HelloWorld") 
myObject.Print 
+1

Grazie! Questo dovrebbe funzionare splendidamente. – steventnorris

+3

Sono riuscito a utilizzare solo il regasm e quindi "CreateObject". Non ho mai potuto fare il lavoro di 'GetObject'. Mi sto perdendo qualcosa? Grazie! – bluish

+2

Quando inserisco due parametri: Ho ricevuto un errore: _ ** ActiveX Component non può creare l'oggetto 'GetObject'. ** _ Quando inserisco solo il primo parametro: Ho ottenuto: _ ** Nome file o nome classe non trovato durante l'automazione. ** _ – HighTechProgramming15

0
+0

Ok, ecco come registrare la DLL con il server/sistema nel suo insieme, ma come faccio a dichiarare/chiamare direttamente una DLL in VBScript? Ho letto il link qui sotto che sembra dire che è possibile, ma come sarebbe quello dichiarare se fosse per un metodo statico di una classe? http://support.microsoft.com/kb/106553 – steventnorris

+0

il tuo link parla di visual basic. non vbscript. e la tua domanda ha già avuto risposta: http://stackoverflow.com/a/769346/736170 –

+0

Questo link non risponde alla mia domanda. E scuse sulla confusione della lingua. Ho bisogno di questo per VBScript, ma ho pensato che ci sarebbe stato un processo simile. Voglio chiamare la DLL dal mio script senza dover registrare con il server. Dovrebbe essere caricato dinamicamente in runtime da un percorso file. – steventnorris

1

Penso che potrebbe essere alla ricerca di Registration-Free COM. Questa risposta SO relativa allo Microsoft.Windows.ActCtx dovrebbe essere di aiuto specifico per VBScript.

Ricordare che COM non supporta i metodi statici, quindi sarà necessario impostare il metodo di stampa in un metodo di istanza.