AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Windows Scripting Host (WSH)
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Scripting Host (WSH)

Ein Thema von himitsu · begonnen am 5. Nov 2023 · letzter Beitrag vom 7. Nov 2023
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.257 Beiträge
 
Delphi 12 Athens
 
#1

Windows Scripting Host (WSH)

  Alt 5. Nov 2023, 10:48
Windows Scripting Host (WSH)
https://de.wikipedia.org/wiki/Windows_Script_Host

https://learn.microsoft.com/en-us/pr...ectedfrom=MSDN
https://community.embarcadero.com/bl...lication-36013


Da dieses in abgeschlossene Windows-API ist (Entwicklung abgeschlossen und Interfaces als volltändig/ausreichend definiert)
läuft es natürlich nur unter Windows. Schön ist aber, dass sich jeder im Windows registrieren und weitere Engines hinzufügen kann.

Standardmäßig sind JavaScript und VBScript vorhanden.
Vielleicht kennt ihr es vom FinalBuilder, welcher Pyphon und PowerShell zusätzlich drin hat. (sie nutzen aber fertige C#-Komponenten dafür, wie z.B. Bei Google suchenIronPython)

Ich hatte vor 'ner Weile mal geschaut, wie man das nutzt (ein paar wenige "ältere" Delphi-Komponenten inzwischen auch gefunden)
und soooooo schlimm sieht es garnicht aus .... in Minimal kommt man "nativ" mit paar Zeilen Code aus (siehe unten).
Und das dann angefangen in eine TComponent zu packen.


https://de.wikipedia.org/wiki/Windows_Script_Host
https://en.wikipedia.org/wiki/Windows_Script_Host
im Englischen Wiki eine schöne Auflistung, was es z.B. für Sprachen gibt.
* Perl, LUA, PHP, Ruby, Tcl, Huskell, Cobol , Fortan, C++ und C# (als Script) und ja, auch Delphi/Pascal, sowie vieles Mehr.

Wie und wo man die Installationen dafür findent, hab ich "noch" nicht geschaut.

Bezüglich Python hatte ich aber schonmal gesucht und
Es gibt eigentlich das Projekt Bei Google suchenActivePython und die Version 2.7 (mit Python 2.7) gibt es als Community Edition zu finden.
* https://www.heise.de/download/produc...-edition-37561
* die 64 Bit-Version ist auch nur die 32 Bit, also funktioniert es nur für 32 Bit-Delphi-Programme
* die Version 3.x gibt es nirgendwo mehr
* und der Entwickler hat die Community Edition eingestellt https://www.activestate.com/blog/goo...tate-platform/
* die aktuelle kostenlose Version des ActiveState hatte ich getestet und es nicht hinbekommen, dass sie sich im Windows registriert (weder 32 noch 64 Bit)
Achtung, beim Login via GitHub, wollen die lese/schreibzugriffe auf alle eure "privaten" Repos haben ... hab's also via eMail gemacht.

ActivePython ist dieses ominöse "Python.AXScript.2", was man in den Demos findet. (funktioniert auch, wenn es installiert ist)
https://wiki.python.org/moin/ActivePython




Quellcode ... joar, kommt irgendwann.
Aktuell hab ich mir mal 'ne Test-Anwendung wild zusammengeklöppelt, welche alle bisher implementierten Funktionen und ein paar Demo enthält. (PS: siehe Hints überall)

* Achtung, die Ausgabeumleitung fehlt noch. (hoffe auf eine andere Lösung, falls man es in einer ConsolenAnwendung nutzen wöllte)
* Expressions sind nutzbar, da als Funktion-Result aus der Funktion raus kommen
* beim ExecuteScript gibt es eigentlich auch ein Result, aber da steht nichts drin
* da es eine GUIAnwendung ist, hat sie "eigentlich" keine Console, wo die Scriptausgabe vom StdOut landen
* rechts in der TestEcke sind zwei Knöpfe (einmal zum Generieren eines Consolenfensters und das Andere mit einer Umleitung der StdIn/StdOut/StdErr ... was ich aber "noch" nicht in meine Komponente integriert hab)


* paar Varianten eigene Objekte/Variablen/Funktionen aus Delphi reinzugeben existieren schon (in 3 Varianten, siehe ScriptingMain.pas -> TPropTest und Co.)
* wobei die Letzte nicht direkt auf IDispatch aufsetzt, sondern IDispatchEx nutzt und dann via RTTI auf Delphi-Code zufreift, also public Objekt-Felder/Variablen, Property und Methoden

* Ja, SynEdit aus'm GetIt könnte man noch benutzen
* externer Zugriff auf aktuelle Variablen/Objekte/Funktionen, des Scripts, fehlt auch noch
* die Debugging-API hab ich "noch" nicht implementiert
* CodeInsight/CodeCompletion wäre noch interessant, also mit LiveDaten aus der ScriptingEngine
* die PythonScript.dll ist noch ohne Funktion (PythonScript)
* und die ConsoleScript.dll (CMD/CommandScript, PowerShell und WSL, falls installiert)

* CMD/PS/SWL hängt noch etwas, da ich dort noch etwas mit der neuen PseudoConsole (ConPTY) kämpfe.
https://www.delphipraxis.net/214002-...doconsole.html

* innerhalb der Engines die Consolen-Ausgabe umzuleiten, wie es z.B. Python4Delphi macht .... naja
* einmal müsste ich das dann jeweils in der aktuellen Scriptsprache machen, falls es dort überhaupt möglich ist, deren Ausgabefunktionen zu überschreiben
* also wäre schon eine allgemeine Umsetzung angebracht




Ach ja, meine ActiveX-Komponenten ConsoleScript.dll und PythonScript.dll
* sorry, mit dem ActiveX-Experten von Delphi bin ich noch nicht klargekommen (und die Tutorials/Videos ), also hab ich mir's erstmal selbsgemacht
* aktuell rufe ich sie direkt auf (SafeLoadLibrary+DllGetClassObject)
* SideBySide-Loading will ich noch ausprobieren
* registrieren sollten sie sich im Windows lassen, aber ob der Aufruf funktioniert oder noch was fehlt ... hab ich nicht getestet




So, und hier noch ein winziger nativer Ansatz:
https://stackoverflow.com/questions/...-from-within-c
[deleted] Müsste jemand das Script aber nochmal testen ... kann sein, dass SetScriptSite nötig ist und man sich noch ein kleines IActiveScriptSite basteln muß.
Miniaturansicht angehängter Grafiken
ActiveScripting.png  
Angehängte Dateien
Dateityp: 7z ActiveScripting.7z (1,37 MB, 5x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Nov 2023 um 17:19 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz