Wojtek P wrote: > Hello! > > I try use Microsoft Word and OpenOffice with Python - and i have some > problems. How to disable "Save As" in word from python code, or how to > cancel this function when user use it? This code below doesn't work :/ > > wxPython 2.8.4.2 <http://2.8.4.2/> > Python 2.4.4 > > > > from win32com.client import DispatchWithEvents, Dispatch > import msvcrt, pythoncom > import time, sys > import types > import os > import threading > import wx > stopEvent = threading.Event() > > ############################## > ################################################# > class WordEvents: > ############################################################################### > > > def OnDocumentChange(self): > self.seen_events["OnDocumentChange"] = None > print "OnDocumentChange" > > def OnWindowActivate(self, doc, wn): > self.seen_events["OnWindowActivate"] = None > print "OnWindowActivate" > > def OnQuit(self): > print "OnQuit" > self.seen_events["OnQuit"] = None > stopEvent.set() > > def OnStartup(self): > print "OnStartup" > self.seen_events["OnStartup"] = None > > def OnDocumentBeforeSave(self, Doc, SaveAsUI, Cancel): > print "OnDocumentBeforeSave" > print "SaveAsUI:", SaveAsUI > if SaveAsUI: > Cancel = True > return > self.seen_events["OnDocumentBeforeSave"] = None The reason Cancel = True is not working is that arguments to functions are passed by value, and seen as local variables. This assignment replaces the local Cancel; it does not affect the caller. I wonder if it might work to return False? > > def OnDocumentBeforeClose(self): > print "OnDocumentBeforeClose" > self.seen_events["OnDocumentBeforeClose"] = None > > ############################################################################### > class MyWord: > ############################################################################### > def __init__(self): > self.wordApp = None > self.wordDoc = None > > def __del__(self): > pythoncom.CoUninitialize() > > def Init(self): > self.wordApp = DispatchWithEvents('Word.Application', WordEvents) > self.wordApp.seen_events = {} > self.wordApp.Visible = 0 > self.wordDoc = self.wordApp.Documents.Add() > > def Start(self): > print "Start..." > s = self.wordDoc.Sentences(1) > s.Text = 'Hello world !' > self.wordDoc.Saved = 1 > self.wordApp.Visible = 1 > > def WaitForFinish(self): > while True: > pythoncom.PumpWaitingMessages() > try: > if not self.wordApp.Visible: # jesli zamkniecie worda to czas > wyjsc > return 0 > except pythoncom.com_error: > pass > return 1 > > def Wait(self): > return self.WaitForFinish() > > def Stop(self): > self.wordApp.Quit() > > > ############################################################################### > > > word_ed = MyWord() > word_ed.Init() > word_ed.Start() > word_ed.Wait() > ------------------------------------------------------------------------ > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 >
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32