plexpy/lib/win32comext/axdebug/dump.py
dependabot[bot] faef9a94c4
Bump cherrypy from 18.8.0 to 18.9.0 (#2266)
* Bump cherrypy from 18.8.0 to 18.9.0

Bumps [cherrypy](https://github.com/cherrypy/cherrypy) from 18.8.0 to 18.9.0.
- [Changelog](https://github.com/cherrypy/cherrypy/blob/main/CHANGES.rst)
- [Commits](https://github.com/cherrypy/cherrypy/compare/v18.8.0...v18.9.0)

---
updated-dependencies:
- dependency-name: cherrypy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update cherrypy==18.9.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>

[skip ci]
2024-03-24 15:25:44 -07:00

61 lines
1.8 KiB
Python

import traceback
import pythoncom
from win32com.axdebug import axdebug
from win32com.client.util import Enumerator
def DumpDebugApplicationNode(node, level=0):
# Recursive dump of a DebugApplicationNode
spacer = " " * level
for desc, attr in [
("Node Name", axdebug.DOCUMENTNAMETYPE_APPNODE),
("Title", axdebug.DOCUMENTNAMETYPE_TITLE),
("Filename", axdebug.DOCUMENTNAMETYPE_FILE_TAIL),
("URL", axdebug.DOCUMENTNAMETYPE_URL),
]:
try:
info = node.GetName(attr)
except pythoncom.com_error:
info = "<N/A>"
print("%s%s: %s" % (spacer, desc, info))
try:
doc = node.GetDocument()
except pythoncom.com_error:
doc = None
if doc:
doctext = doc.QueryInterface(axdebug.IID_IDebugDocumentText)
numLines, numChars = doctext.GetSize()
# text, attr = doctext.GetText(0, 20, 1)
text, attr = doctext.GetText(0, numChars, 1)
print(
"%sText is %s, %d bytes long" % (spacer, repr(text[:40] + "..."), len(text))
)
else:
print("%s%s" % (spacer, "<No document available>"))
for child in Enumerator(node.EnumChildren()):
DumpDebugApplicationNode(child, level + 1)
def dumpall():
dm = pythoncom.CoCreateInstance(
axdebug.CLSID_MachineDebugManager,
None,
pythoncom.CLSCTX_ALL,
axdebug.IID_IMachineDebugManager,
)
e = Enumerator(dm.EnumApplications())
for app in e:
print("Application: %s" % app.GetName())
node = (
app.GetRootNode()
) # of type PyIDebugApplicationNode->PyIDebugDocumentProvider->PyIDebugDocumentInfo
DumpDebugApplicationNode(node)
if __name__ == "__main__":
try:
dumpall()
except:
traceback.print_exc()