AIM-PIbd-32-Kurbanova-A-A/aimenv/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py
2024-10-02 22:15:59 +04:00

89 lines
2.8 KiB
Python

import os
import sys
import traceback
import pythoncom
import win32ui
from win32com.axscript import axscript
from win32com.axscript.server import axsite
from win32com.axscript.server.error import Exception
from win32com.server import util
version = "0.0.1"
class MySite(axsite.AXSite):
def OnScriptError(self, error):
print("An error occurred in the Script Code")
exc = error.GetExceptionInfo()
try:
text = error.GetSourceLineText()
except:
text = "<unknown>"
context, line, char = error.GetSourcePosition()
print(
"Exception: %s (line %d)\n%s\n%s^\n%s"
% (exc[1], line, text, " " * (char - 1), exc[2])
)
class ObjectModel:
_public_methods_ = ["echo", "msgbox"]
def echo(self, *args):
print("".join(map(str, args)))
def msgbox(self, *args):
msg = "".join(map(str, args))
win32ui.MessageBox(msg)
def TestEngine():
model = {"Test": util.wrap(ObjectModel())}
scriptDir = "."
site = MySite(model)
pyEngine = site._AddEngine("Python")
# pyEngine2 = site._AddEngine("Python")
vbEngine = site._AddEngine("VBScript")
# forthEngine = site._AddEngine("ForthScript")
try:
# code = open(os.path.join(scriptDir, "debugTest.4ths"),"rb").read()
# forthEngine.AddCode(code)
code = open(os.path.join(scriptDir, "debugTest.pys"), "rb").read()
pyEngine.AddCode(code)
code = open(os.path.join(scriptDir, "debugTest.vbs"), "rb").read()
vbEngine.AddCode(code)
# code = open(os.path.join(scriptDir, "debugTestFail.pys"),"rb").read()
# pyEngine2.AddCode(code)
# from win32com.axdebug import axdebug
# sessionProvider=pythoncom.CoCreateInstance(axdebug.CLSID_DefaultDebugSessionProvider,None,pythoncom.CLSCTX_ALL, axdebug.IID_IDebugSessionProvider)
# sessionProvider.StartDebugSession(None)
input("Press enter to continue")
# forthEngine.Start()
pyEngine.Start() # Actually run the Python code
vbEngine.Start() # Actually run the VB code
except pythoncom.com_error as details:
print("Script failed: %s (0x%x)" % (details[1], details[0]))
# Now run the code expected to fail!
# try:
# pyEngine2.Start() # Actually run the Python code that fails!
# print "Script code worked when it should have failed."
# except pythoncom.com_error:
# pass
site._Close()
if __name__ == "__main__":
import win32com.axdebug.util
try:
TestEngine()
except:
traceback.print_exc()
win32com.axdebug.util._dump_wrapped()
sys.exc_type = sys.exc_value = sys.exc_traceback = None
print(pythoncom._GetInterfaceCount(), "com objects still alive")