DEFINE CLASS WordHandler AS session OLEPUBLIC IMPLEMENTS ApplicationEvents2 IN "d:\office2003\office11\msword.olb" PROCEDURE ApplicationEvents2_Quit() AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_DocumentChange() AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_DocumentOpen(Doc AS VARIANT) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_DocumentBeforeClose(Doc AS VARIANT, Cancel AS LOGICAL) AS VOID * add user code here to do whatever needs to be done after the user * edits the document ENDPROC PROCEDURE ApplicationEvents2_DocumentBeforePrint(Doc AS VARIANT, Cancel AS LOGICAL) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_DocumentBeforeSave(Doc AS VARIANT, SaveAsUI AS LOGICAL, Cancel AS LOGICAL) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_NewDocument(Doc AS VARIANT) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_WindowActivate(Doc AS VARIANT, Wn AS VARIANT) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_WindowDeactivate(Doc AS VARIANT, Wn AS VARIANT) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_WindowSelectionChange(Sel AS VARIANT) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_WindowBeforeRightClick(Sel AS VARIANT, Cancel AS LOGICAL) AS VOID * add user code here ENDPROC PROCEDURE ApplicationEvents2_WindowBeforeDoubleClick(Sel AS VARIANT, Cancel AS LOGICAL) AS VOID * add user code here ENDPROC ENDDEFINEAnd you use it in your code like this:
oWord = CREATEOBJECT ('Word.Application') oHandler = NEWOBJECT( 'WordHandler', 'WordJandler.prg') EVENTHANDLER( oWord, oHandler ) *** Do whatever here *** Open document, etc oWord.Visible = .T.Now, whenever the user tries to close the document, any code that you have written in the ApplicationEvents2_DocumentBeforeClose will execute, allowing you to save changes, create PDF, etc, before closing the document.