VBscript Library einbinden

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    VBscript Library einbinden

    Hallo zusammen

    Folgendes:
    Ich habe eine VBscript Datei ("setCursor.vbs") auf meinem Desktop.
    Der Code dieser Datei sieht folgendermasen aus:

    VB.NET-Quellcode

    1. Declare Function SetCursorPos Lib "user32" ( _
    2. ByVal x As Long, _
    3. ByVal y As Long) As Long
    4. Private Sub setCursor()
    5. SetCursorPos 500, 500
    6. End Sub


    Leider kann ich das File nicht ausführen. Ich bekomme einen Syntax Error bei Zeile 1, Zeichen 9.
    Die Declare-Anweisung wird offensichtlich nicht erkannt.

    Das gleiche Script kann ich allerdings in Access ohne Probleme ausführen.
    Dort habe ich einen Verweis auf die beiden Librarys
    C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
    C:\Program Files\Microsoft Office\OFFICE11\MSACC.OLB

    Liegt es daran, dass ich diese beiden Librarys in meinem Script nicht eingebunden habe?
    Wenn ja, wie kann ich sie einbinden?

    Wenn nein, wie kann ich die Declare-Anweisung sonst nutzen?

    mfg kaktus
    Geht mit Vb Script nicht.

    Beste Möglichkeit dir mir einfiele wäre in VB.NET eine COM Klasse zu schreiben, welche dir die Funktionen zur Verfügung stellt.
    Eine bessere Möglichkeit fällt mir im Moment nicht ein.

    Wenn jemand ne bessere Möglichkeit kennt, dann würde mich das auch interessieren.


    EDIT:
    Ich habe das mit der COM Klasse gerade mal getestet und es funktioniert einwandfrei ;)
    Du musst natürlich die Klasse auf der Maschine auf der das Script läuft dann immer registrieren.
    (Stichwort regsrv32.exe)
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mono“ ()

    Die Anleitung bei MSDN funktioniert einwandfrei.

    Hier mal eine Bsp COM Klasse.
    Du startest ein neues Projekt vom Typ Klassenbibliothek.
    Das Projekt heisst 'MyClasses'.
    Du fügst eine neue COM KLasse hinzu
    Die COM Klasse heisst MyCom.
    Die zum Start des Projekts automatisch erzeugte KLasse kannst du löschen.
    Die Com KLasse sieht so aus (bei deinem Bsp.):

    VB.NET-Quellcode

    1. <ComClass(MyCom.ClassId, MyCom.InterfaceId, MyCom.EventsId)> _
    2. Public Class MyCom
    3. #Region "COM-GUIDs"
    4. ' Diese GUIDs stellen die COM-Identität für diese Klasse
    5. ' und ihre COM-Schnittstellen bereit. Wenn Sie sie ändern, können vorhandene
    6. ' Clients nicht mehr auf die Klasse zugreifen.
    7. Public Const ClassId As String = "6dd0b419-917b-4ae3-b01e-8d2d590076d3"
    8. Public Const InterfaceId As String = "14e5654a-171e-4f59-951a-6712da75b083"
    9. Public Const EventsId As String = "d1d091ee-0820-4021-b35a-83512e9089d5"
    10. #End Region
    11. Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    12. ' Eine erstellbare COM-Klasse muss eine Public Sub New()
    13. ' ohne Parameter aufweisen. Andernfalls wird die Klasse
    14. ' nicht in der COM-Registrierung registriert und kann nicht
    15. ' über CreateObject erstellt werden.
    16. Public Sub New()
    17. MyBase.New()
    18. End Sub
    19. Public Sub setCursor()
    20. SetCursorPos(500, 500)
    21. End Sub
    22. End Class


    Die ID's werden von VS selber generiert.
    Danach erstellst du das Projekt. (Achtung, in Projekteigenschaften: Kompilieren muss das Häkchen für COM Objekte registrieren gesetzt sein)

    IN Vbscript greifst du dann über

    VB.NET-Quellcode

    1. Dim myCom
    2. Set myCom = CreateObject("myclasses.myCom")
    3. myCom.setCursor


    darauf zu.

    //EDIT:

    Du kannst die Klassen auch manuell registrieren mit dem Tool Regasm.exe, welches hier: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 zu finden ist.
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mono“ ()

    Das ist korrekt Myrax.

    Dies ginge durch :

    VB.NET-Quellcode

    1. Windows.Forms.Cursor.Position = New Point(100,100)


    Es ging mir um die Demonstration dies in VB Script einzubinden.
    Den Code habe ich mir gar nicht so sehr angeschaut ^^ ;)

    Aber danke für den Hinweis, das ist definitiv schöner
    Das ist meine Signatur und sie wird wunderbar sein!