|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # 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()
|