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
Odpowiedz
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
Dzięki! To powinno zadziałać znakomicie. – steventnorris
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
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
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
Twój link mówi o visual basic. nie vbscript. i twoje pytanie zostało już odebrane: http://stackoverflow.com/a/769346/736170 –
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
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.
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
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