[python-win32] python-win32 Digest, Vol 143, Issue 7

Claudemir de almeida rosa claudemir.ar at gmail.com
Thu Feb 12 12:12:35 CET 2015


It still fails, follow example


#coding: gbk

from win32com import universal
from win32com.server.exception import COMException
from win32com.client import gencache, DispatchWithEvents
import winerror
import pythoncom
from win32com.client import constants, Dispatch
import sys
import win32com.client

# Support for COM objects we use.
gencache.EnsureModule('{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}', 0, 2, 1,
bForDemand=True) # Office 9
gencache.EnsureModule('{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}', 0, 2, 5,
bForDemand=True)

# The TLB defiining the interfaces we implement
universal.RegisterInterfaces('{AC0714F2-3D04-11D1-AE7D-00A0C90F26F4}', 0,
1, 0, ["_IDTExtensibility2"])
universal.RegisterInterfaces('{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}', 0,
2, 5, ["IRibbonExtensibility", "IRibbonControl"])

class ButtonEvent:
    def OnClick(self, button, cancel):
        import win32ui # Possible, but not necessary, to use a Pythonwin GUI
        import win32con
        win32ui.MessageBox("Hello from
Python","PythonTest",win32con.MB_OKCANCEL)
        return cancel

class WordAddin:
    _com_interfaces_ = ['_IDTExtensibility2', 'IRibbonExtensibility']
    _public_methods_ = ['do','GetImage']
    _reg_clsctx_ = pythoncom.CLSCTX_INPROC_SERVER
    _reg_clsid_ = "{C5482ECA-F559-45A0-B078-B2036E6F011A}"
    _reg_progid_ = "Python.Test.WordAddin"
    _reg_policy_spec_ = "win32com.server.policy.EventHandlerPolicy"

    def __init__(self):
        self.appHostApp = None

    def do(self,ctrl):
        import win32ui # Possible, but not necessary, to use a Pythonwin GUI
        import win32con
        win32ui.MessageBox("Hello from
Python","PythonTest",win32con.MB_OKCANCEL)

    def GetImage(self,ctrl):
        from gdiplus import LoadImage
        i = LoadImage( 'c:/edit.png' )
        print i, 'ddd'
        return i

    def GetCustomUI(self,control):
        s = '''
            <mso:customUI xmlns:x1="
http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="
http://schemas.microsoft.com/office/2009/07/customui">
              <ribbon startFromScratch="false">
                <tabs>
                  <tab id="CustomTab" label="JJ">
                    <group id="MainGroup" label="Main">
                      <button id="Button" label="doo" imageMso="HappyFace"
                        size="large" onAction="do" />

                      <button id="Button2" label="doo2" getImage='GetImage'
                        size="large" onAction="do" />

                    </group>

                  </tab>
                </tabs>
              </ribbon>
            </customUI>
        '''
        return s

    def OnConnection(self, application, connectMode, addin, custom):
        print "OnConnection", application, connectMode, addin, custom
        try:
            self.appHostApp = application
        except pythoncom.com_error, (hr, msg, exc, arg):
            print "The Excel call failed with code %d: %s" % (hr, msg)
            if exc is None:
                print "There is no extended error information"
            else:
                wcode, source, text, helpFile, helpId, scode = exc
                print "The source of the error is", source
                print "The error message is", text
                print "More info can be found in %s (id=%d)" % (helpFile,
helpId)

    def OnDisconnection(self, mode, custom):
        print "OnDisconnection"
        #self.appHostApp.CommandBars("PythonBar").Delete
        self.appHostApp=None


    def OnAddInsUpdate(self, custom):
        print "OnAddInsUpdate", custom

    def OnStartupComplete(self, custom):
        print "OnStartupComplete", custom

    def OnBeginShutdown(self, custom):
        print "OnBeginShutdown", custom



def RegisterAddin(klass):
    import _winreg
    key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER,
"Software\\Microsoft\\Office\\Word\\Addins")
    subkey = _winreg.CreateKey(key, klass._reg_progid_)
    _winreg.SetValueEx(subkey, "CommandLineSafe", 0, _winreg.REG_DWORD, 0)
    _winreg.SetValueEx(subkey, "LoadBehavior", 0, _winreg.REG_DWORD, 3)
    _winreg.SetValueEx(subkey, "Description", 0, _winreg.REG_SZ, "Word
Addin")
    _winreg.SetValueEx(subkey, "FriendlyName", 0, _winreg.REG_SZ, "JJ Word
Addin")

def UnregisterAddin(klass):
    import _winreg
    try:
        _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
"Software\\Microsoft\\Office\\Word\\Addins\\" + klass._reg_progid_)
    except WindowsError:
        pass

if __name__ == '__main__':
    import win32com.server.register
    win32com.server.register.UseCommandLine( WordAddin )
    if "--unregister" in sys.argv:
        UnregisterAddin( WordAddin )
    else:
        RegisterAddin( WordAddin )


att

Claudemir

2015-02-12 9:00 GMT-02:00 <python-win32-request at python.org>:

> Send python-win32 mailing list submissions to
>         python-win32 at python.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://mail.python.org/mailman/listinfo/python-win32
> or, via email, send a message with subject or body 'help' to
>         python-win32-request at python.org
>
> You can reach the person managing the list at
>         python-win32-owner at python.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of python-win32 digest..."
>
>
> Today's Topics:
>
>    1. Re: question about word addin , IRibbonExtensibility,
>       GetCustomUI, getImage, IPicture (Tim Roberts)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 11 Feb 2015 10:21:55 -0800
> From: Tim Roberts <timr at probo.com>
> To: Python-Win32 List <python-win32 at python.org>
> Subject: Re: [python-win32] question about word addin ,
>         IRibbonExtensibility, GetCustomUI, getImage, IPicture
> Message-ID: <54DB9DC3.4080901 at probo.com>
> Content-Type: text/plain; charset="utf-8"
>
> Claudemir de almeida rosa wrote:
> > can you send me an example to read image in addin with ribbon
>
> Your question is not clear.  Where is the image coming from, and where
> do you want it to go?
>
> The title of your message was copied word-for-word from a three-year-old
> message on this mailing list, so I assume you've been through that
> thread.  From that, you can see that it's not easy.  Did you have any
> success?
>
> --
> Tim Roberts, timr at probo.com
> Providenza & Boekelheide, Inc.
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> python-win32 mailing list
> python-win32 at python.org
> https://mail.python.org/mailman/listinfo/python-win32
>
>
> ------------------------------
>
> End of python-win32 Digest, Vol 143, Issue 7
> ********************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20150212/858d6fd6/attachment.html>


More information about the python-win32 mailing list