[Bruce Peterson wrote]
> The ActiveState documentation discusses how to use the Windows api using 
> modules such as win32api. However other methods, in particular 
> CreateCompatibleBitmap, are shown as being  a PyCDgiObject with no 
> indication of what module these methods are in. They're not in win32gui -- 
> which would be my first guess. Has anyone worked with this or can point to 
> where the module with these Win32 methods might reside?

The only attributes and methods in PyWin32-land that include "bitmap"
(that I can find) are the following:

    D:\>pywin32where Bitmap
    Found approximate match: 'win32clipboard.CF_BITMAP'.
    Found approximate match: 'win32clipboard.CF_DSPBITMAP'.
    Found approximate match: 'win32gui.IMAGE_BITMAP'.
    Found approximate match: 'win32con.BS_BITMAP'.
    Found approximate match: 'win32con.CF_BITMAP'.
    Found approximate match: 'win32con.CF_DSPBITMAP'.
    Found approximate match: 'win32con.DCTT_BITMAP'.
    Found approximate match: 'win32con.DMTT_BITMAP'.
    Found approximate match: 'win32con.DST_BITMAP'.
    Found approximate match: 'win32con.GGO_BITMAP'.
    Found approximate match: 'win32con.IMAGE_BITMAP'.
    Found approximate match: 'win32con.MFT_BITMAP'.
    Found approximate match: 'win32con.MF_BITMAP'.
    Found approximate match: 'win32con.MF_USECHECKBITMAPS'.
    Found approximate match: 'win32con.MIIM_BITMAP'.
    Found approximate match: 'win32con.OBJ_BITMAP'.
    Found approximate match: 'win32con.RC_BITMAP64'.
    Found approximate match: 'win32con.RC_DI_BITMAP'.
    Found approximate match: 'win32con.RC_SAVEBITMAP'.
    Found approximate match: 'win32con.RT_BITMAP'.
    Found approximate match: 'win32con.SS_BITMAP'.
    Found approximate match: 'win32ui.CreateBitmap'.
    Found approximate match: 'win32ui.CreateBitmapFromHandle'.

No "CreateCompatibleBitmap".  There are many Win32 API methods that are
not implemented in PyWin32 (Mark Hammond is always accepting patches,
though. :)

I have attached the little 'pywin32where' script that I use to track
down methods and attributes in PyWin32.

Cheers,
Trent

-- 
Trent Mick
[EMAIL PROTECTED]
"""
    Find a symbol in PyWin32-land.

    Usage:
        python pywin32where.py [<symbols>...]

    This will print the full import path to the given symbol.
    Approximate matches are printed on 
"""
#TODO:
#   - add my standard command line options: -h, -v, etc.

from __future__ import generators

import os
import sys

gModules = ["odbc",
            "perfmon",
            "pywintypes",
            #XXX Dunno about this one.
            #"servicemanager",
            "win2kras",
            "win32api",
            "win32clipboard",
            "win32event",
            "win32evtlog",
            "win32file",
            "win32gui",
            "win32help",
            "win32lz",
            "win32net",
            "win32pdh",
            "win32pipe",
            "win32print",
            "win32process",
            "win32ras",
            "win32security",
            "win32service",
            "win32wnet",
            "win32con",
            #"wincerapi",  # ActivePython does not include this.
            #XXX Dunno about these:
            #"IADsContainer",
            #"IADsUser",
            #"IDirectoryObject",
            "win32com.axcontrol",
            "win32com.axdebug",
            "win32com.axscript",
            "win32com.shell",
            "win32com.shell.shell",
            "win32com.shell.shellcon",
            #XXX Dunno about these two.
            #"win32com.exchange",
            #"win32com.exchdapi",
            "win32com.internet",
            "win32com.mapi",
            "pythoncom",
            "win32com.shell",
            "win32ui",
            "win32uiole",
            "dde",  # has to be imported after 'win32ui'
            ]

def _getObject(importPath):
    parts = importPath.split('.')
    if len(parts) == 1:
        module = __import__(parts[0])
        return module
    else:
        module = __import__('.'.join(parts[:-1]), globals(), locals(),
                            parts[-1:])
        return getattr(module, parts[-1])
            

def where(symbol):
    """Return the full Python import path to the given symbol in
    PyWin32-land."""
    global gModules
    for moduleName in gModules:
        module = _getObject(moduleName)
        if symbol in dir(module):
            yield module.__name__ + '.' + symbol
        for s in dir(module):
            approx = None
            if s.lower().find( symbol.lower() ) != -1 and s != symbol:
                approx = module.__name__ + '.' + s
            elif symbol.lower().find( s.lower() ) != -1 and s != symbol:
                approx = module.__name__ + '.' + s
            if approx is not None and approx != symbol:
                sys.stderr.write("Found approximate match: '%s'.\n"\
                                 % approx)

def main(argv):
    for arg in argv[1:]:
        for result in where(arg):
            print result

if __name__ == "__main__":
    sys.exit( main(sys.argv) )

Reply via email to