2012-03-23 8 views
8

Skompilowałem kod C# do biblioteki DLL, ale nie mam z tym większego doświadczenia. Mój kod C# zawiera klasę HelloWorld ze statyczną metodą Print(). Chciałbym użyć tej biblioteki DLL w VBScript, aby wywołać metodę Print(). Wiem, że to podstawa, ale używam tego jako testu dla projektu na większą skalę, który zostanie skompilowany do biblioteki DLL w końcu. Jak wygląda deklaracja i jak wygląda wywołanie metody?Używanie bibliotek DLL w VBScript

+1

możliwy duplikat [Jak wywołać funkcję C# DLL z VBScript] (http://stackoverflow.com/questions/769332/how-to-call-c-sharp-dll-function- from-vbscript) – JeffO

+0

Zrobiłem sprawdź ten link, ale nie całkiem dostaję to, czego chcę. Szukam dynamicznie ładować bibliotekę dll w środowisku wykonawczym przez VBScript z danego pliku, zamiast rejestrowania się na serwerze. Ponownie, biblioteki dll są dla mnie bardzo nowe, więc może to być to, co dzieje się w tej odpowiedzi, po prostu tego nie widzę. – steventnorris

Odpowiedz

17

Jeśli dll jest zarejestrowany w systemie, należy użyć CreateObject z jego ProgID.

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

Jeśli obiekt nie jest zarejestrowany w systemie, należy użyć GetObject ze ścieżką do pliku zawierającego swój obiekt. Upewnij się, że twój obiekt udostępnia właściwy interfejs. (Drugi parametr jest opcjonalny. Tutaj można podać nazwę klasy, jeśli obiekt odsłania więcej niż jeden.)

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

Dzięki! To powinno zadziałać znakomicie. – steventnorris

+3

Udało mi się tylko użyć regresji, a następnie 'CreateObject'. Nigdy nie mogłem wykonać pracy "GetObject". Czy czegoś brakuje? Dzięki! – bluish

+2

Po wprowadzeniu dwóch parametrów: Wystąpił błąd: _ ** Składnik ActiveX nie może utworzyć obiektu "GetObject". ** _ Kiedy wpisuję tylko pierwszy parametr: Otrzymałem: _ ** Nazwa pliku lub nazwa klasy nie znalezione podczas automatyzacji. ** _ – HighTechProgramming15

0
+0

Ok, więc to w jaki sposób zarejestrować DLL z serwera/systemu jako całości, ale jak mógłbym bezpośrednio zadeklarować/wywołać dll w VBScript? Przeczytałem poniższy link, który wydaje się mówić, że jest to możliwe, ale jak by wyglądało, gdyby było to dla statycznej metody klasy? http://support.microsoft.com/kb/106553 – steventnorris

+0

Twój link mówi o visual basic. nie vbscript. i twoje pytanie zostało już odebrane: http://stackoverflow.com/a/769346/736170 –

+0

Ten link nie odpowiada na moje pytanie. I przepraszam za zamieszanie językowe. Potrzebuję tego dla VBScript, ale założyłem, że będzie podobny proces. Chcę wywołać bibliotekę dll z mojego skryptu bez konieczności rejestrowania się na serwerze. Powinien być ładowany dynamicznie w środowisku wykonawczym ze ścieżki pliku. – steventnorris

1

myślę, że może być szukasz Registration-Free COM. Ta odpowiedź SO dotycząca Microsoft.Windows.ActCtx powinna pomóc w szczególności dla VBScript.

Należy pamiętać, że model COM nie obsługuje metod statycznych, dlatego należy wprowadzić metodę drukowania do metody instancji.