Spaces:
Sleeping
Sleeping
# pydumper.py | |
# | |
# This is being worked on - it does not yet work at all, in ay way | |
# shape or form :-) | |
# | |
# A new script engine, derived from the standard scripting engine, | |
# which dumps information. | |
# This generally can be used to grab all sorts of useful details about | |
# an engine - expose bugs in it or Python, dump the object model, etc. | |
# As it is derived from the standard engine, it fully supports Python | |
# as a scripting language - meaning the dumps produced can be quite dynamic, | |
# and based on the script code you execute. | |
from win32com.axscript import axscript | |
from . import pyscript | |
from .pyscript import SCRIPTTEXT_FORCEEXECUTION, Exception, RaiseAssert, trace | |
PyDump_CLSID = "{ac527e60-c693-11d0-9c25-00aa00125a98}" | |
class AXScriptAttribute(pyscript.AXScriptAttribute): | |
pass | |
class NamedScriptAttribute(pyscript.NamedScriptAttribute): | |
pass | |
class PyScript(pyscript.PyScript): | |
pass | |
def Register(): | |
import sys | |
if "-d" in sys.argv: | |
dispatcher = "DispatcherWin32trace" | |
debug_desc = " (" + dispatcher + ")" | |
debug_option = "Yes" | |
else: | |
dispatcher = None | |
debug_desc = "" | |
debug_option = "" | |
categories = [axscript.CATID_ActiveScript, axscript.CATID_ActiveScriptParse] | |
clsid = PyDump_CLSID | |
lcid = 0x0409 # // english | |
policy = None # "win32com.axscript.client.axspolicy.AXScriptPolicy" | |
print("Registering COM server%s..." % debug_desc) | |
from win32com.server.register import RegisterServer | |
languageName = "PyDump" | |
verProgId = "Python.Dumper.1" | |
RegisterServer( | |
clsid=clsid, | |
pythonInstString="win32com.axscript.client.pyscript.PyDumper", | |
className="Python Debugging/Dumping ActiveX Scripting Engine", | |
progID=languageName, | |
verProgID=verProgId, | |
catids=categories, | |
policy=policy, | |
dispatcher=dispatcher, | |
) | |
CreateRegKey(languageName + "\\OLEScript") | |
# Basic Registration for wsh. | |
win32com.server.register._set_string(".pysDump", "pysDumpFile") | |
win32com.server.register._set_string("pysDumpFile\\ScriptEngine", languageName) | |
print("Dumping Server registered.") | |
if __name__ == "__main__": | |
Register() | |