Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB.NET] Accedere a VBScript

    Volevo fare in modo che da un programma scritto in VB.Net StandAlone, potessi richiamare una funzione esterna scritta in un file vbs editato dall'utente.

    Ad esempio, avendo qualcosa come:

    codice:
      Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox(DaFileVbs("C:\ScriptFile.vbs").Function("Prova", 10)
      End Sub
    Ed un file (C:\ScriptFile.vbs, come avete fatto ad indovinare?) in cui c'è scritto:

    codice:
    Function Prova(Parametro) As String
      Prova = "Il quadrato di " & Parametro & " e' " & Parametro * Parametro
    End Function
    Devo vedere un MessageBox con il testo "Il quadrato di 10 e' 100"

    Nessuno sa se esiste quel DaFileVBS ?

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    L'unico modo per fare una cosa del genere è utilizzare il Dynamic Language Runtime

    Cerca un po in internet e vedi se il vbscript è supportato perchè personalmente non l'ho mai utilizzato.

    nb: Solo framework .net 4.0 e succ.
    I got the remedy

  3. #3
    Non credo che sia la risposta giusta. Sembrerebbe che per Dynamic Language Runtime si intenda l'implementazione di metodi agli oggetti in maniera dinamica, del tipo un po' come fanno HTML o XML, o - per farsi capire un po' meglio - anche i Dictionary, dove (ad esempio per l'ultimo caso) posso fare:
    codice:
      Dim MyDic As New Dictionary(Of String,Integer)
      MyDic.Add("Uno", 1)
      MyDic.Add("Due", 2)
      Debug.Print(MyDic!Uno)
      Debug.Print(MyDic!Due)
    con la differenza che nel Dictionary si accede alla struttura contenuta nel valore indicando la chiave con «!Nome», nell'XML vi si accede con «.<NomeElemento>» o «.@NomeAttributo». Nel Dynamic Language Runtime vi si accede direttamente con «.», esattamente come fosse una proprietà o un metodo realmente esistente, definendo nelle classi cosa deve essere fatto nel momento in cui viene richiesto l'accesso ad un metodo o una proprietà non definita.

    Ad esempio, nell' esempio riportato nell'Help Creazione di un oggetto dinamico personalizzato, puoi vedere che l'oggetto rFile è un'istanza della classe ReadOnlyFile, e su questa classe non è definita nessun metodo o proprietà chiamati Customer, ma un TryInvokeMember e un TryGetMember che stabiliscono cosa fare al momento che viene utilizzato un membro o una proprietà con un nome differenti da quelli predefiniti. rFile.Customer passa da lì per sapere cosa fare.

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Se lo dici tu.
    I got the remedy

  5. #5

    SONO RIUSCITO A TROVARLO!!!

    Una volta fatto il riferimento a Microsoft Script Control, basta fare:

    codice:
      Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ScrCtr As New MSScriptControl.ScriptControl
        ScrCtr.Language = "VBScript"
        ScrCtr.AddCode(IO.File.ReadAllText("C:\ScriptFile.vbs"))
        MsgBox(ScrCtr.Run("Prova", 10))
      End Sub
    Al posto di VBScript è possibile scrivere anche JavaScript

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    bravo, vedi che non era come dicevi nell'intervento precedente
    In realtà è anche quello, ma diciamo che lo scopo del DRL è proprio quello di eseguire codice in altri linguaggi nonchè un'altro ma te lo lascio trovare a te.
    I got the remedy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.