pywin32-checkins Mailing List for Python for Windows Extensions (Page 104)
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(1) |
Jun
(6) |
Jul
(50) |
Aug
(11) |
Sep
(24) |
Oct
(184) |
Nov
(118) |
Dec
(22) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(31) |
Feb
(25) |
Mar
(34) |
Apr
(105) |
May
(49) |
Jun
(38) |
Jul
(39) |
Aug
(7) |
Sep
(98) |
Oct
(79) |
Nov
(20) |
Dec
(17) |
2005 |
Jan
(66) |
Feb
(32) |
Mar
(43) |
Apr
(30) |
May
(58) |
Jun
(30) |
Jul
(16) |
Aug
(4) |
Sep
(21) |
Oct
(42) |
Nov
(11) |
Dec
(14) |
2006 |
Jan
(42) |
Feb
(30) |
Mar
(22) |
Apr
(1) |
May
(9) |
Jun
(15) |
Jul
(20) |
Aug
(9) |
Sep
(8) |
Oct
(1) |
Nov
(9) |
Dec
(43) |
2007 |
Jan
(52) |
Feb
(45) |
Mar
(20) |
Apr
(12) |
May
(59) |
Jun
(39) |
Jul
(35) |
Aug
(31) |
Sep
(17) |
Oct
(20) |
Nov
(4) |
Dec
(4) |
2008 |
Jan
(28) |
Feb
(111) |
Mar
(4) |
Apr
(27) |
May
(40) |
Jun
(27) |
Jul
(32) |
Aug
(94) |
Sep
(87) |
Oct
(153) |
Nov
(336) |
Dec
(331) |
2009 |
Jan
(298) |
Feb
(127) |
Mar
(20) |
Apr
(8) |
May
|
Jun
(10) |
Jul
(6) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
|
Dec
(1) |
2010 |
Jan
(7) |
Feb
(1) |
Mar
|
Apr
|
May
(15) |
Jun
(4) |
Jul
(3) |
Aug
(28) |
Sep
(1) |
Oct
(19) |
Nov
(16) |
Dec
(6) |
2011 |
Jan
(2) |
Feb
(18) |
Mar
(17) |
Apr
(12) |
May
(5) |
Jun
(11) |
Jul
(7) |
Aug
(2) |
Sep
(2) |
Oct
(4) |
Nov
(4) |
Dec
|
2012 |
Jan
(6) |
Feb
(2) |
Mar
|
Apr
(8) |
May
(4) |
Jun
(3) |
Jul
(13) |
Aug
(27) |
Sep
(8) |
Oct
(9) |
Nov
(3) |
Dec
(2) |
2013 |
Jan
|
Feb
(1) |
Mar
(5) |
Apr
(10) |
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(9) |
2014 |
Jan
(2) |
Feb
(4) |
Mar
(4) |
Apr
(1) |
May
(4) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
(1) |
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
(6) |
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(3) |
Feb
(2) |
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: Roger U. <ru...@us...> - 2006-02-12 09:47:57
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30368/win32/src Modified Files: win32security.i Log Message: Add MapGenericMask Index: win32security.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32security.i,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** win32security.i 20 Sep 2005 12:41:31 -0000 1.29 --- win32security.i 12 Feb 2006 09:47:43 -0000 1.30 *************** *** 3517,3520 **** --- 3517,3541 ---- %} + // @pyswig int|MapGenericMask|Translates generic access rights into specific rights + %native(MapGenericMask) PyMapGenericMask; + %{ + static PyObject *PyMapGenericMask(PyObject *self, PyObject *args) + { + DWORD mask; + GENERIC_MAPPING mapping; + // @rdesc The input AccessMask will be returned with any generic access rights translated into specific equivalents + // @pyparm int|AccessMask||A bitmask of generic rights to be interpreted according to GenericMapping + // @pyparm (int,int,int,int)|GenericMapping||A tuple of 4 bitmasks (GenericRead, GenericWrite, GenericExecute, GenericAll) + // containing the standard and specific rights that correspond to the generic rights. + if (!PyArg_ParseTuple(args,"k(kkkk)", &mask, &mapping.GenericRead, &mapping.GenericWrite, + &mapping.GenericExecute, &mapping.GenericAll)) + return NULL; + Py_BEGIN_ALLOW_THREADS + MapGenericMask(&mask, &mapping); + Py_END_ALLOW_THREADS + return PyLong_FromUnsignedLong(mask); + } + %} + #define TOKEN_ADJUST_DEFAULT TOKEN_ADJUST_DEFAULT // Required to change the default ACL, primary group, or owner of an access token. #define TOKEN_ADJUST_GROUPS TOKEN_ADJUST_GROUPS // Required to change the groups specified in an access token. |
From: Roger U. <ru...@us...> - 2006-02-12 09:37:06
|
Update of /cvsroot/pywin32/pywin32/win32/Lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27361/win32/Lib Modified Files: ntsecuritycon.py Log Message: Add constants and flags from aclui.h Index: ntsecuritycon.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/Lib/ntsecuritycon.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ntsecuritycon.py 24 May 2005 13:55:28 -0000 1.4 --- ntsecuritycon.py 12 Feb 2006 09:36:52 -0000 1.5 *************** *** 565,566 **** --- 565,609 ---- DS_GC_SERVER_REQUIRED | \ DS_WRITABLE_REQUIRED ) + + ## from aclui.h + # SI_OBJECT_INFO.dwFlags + SI_EDIT_PERMS = 0x00000000L + SI_EDIT_OWNER = 0x00000001L + SI_EDIT_AUDITS = 0x00000002L + SI_CONTAINER = 0x00000004L + SI_READONLY = 0x00000008L + SI_ADVANCED = 0x00000010L + SI_RESET = 0x00000020L + SI_OWNER_READONLY = 0x00000040L + SI_EDIT_PROPERTIES = 0x00000080L + SI_OWNER_RECURSE = 0x00000100L + SI_NO_ACL_PROTECT = 0x00000200L + SI_NO_TREE_APPLY = 0x00000400L + SI_PAGE_TITLE = 0x00000800L + SI_SERVER_IS_DC = 0x00001000L + SI_RESET_DACL_TREE = 0x00004000L + SI_RESET_SACL_TREE = 0x00008000L + SI_OBJECT_GUID = 0x00010000L + SI_EDIT_EFFECTIVE = 0x00020000L + SI_RESET_DACL = 0x00040000L + SI_RESET_SACL = 0x00080000L + SI_RESET_OWNER = 0x00100000L + SI_NO_ADDITIONAL_PERMISSION = 0x00200000L + SI_MAY_WRITE = 0x10000000L + SI_EDIT_ALL = (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS) + + # SI_ACCESS.dwFlags + SI_ACCESS_SPECIFIC = 0x00010000L + SI_ACCESS_GENERAL = 0x00020000L + SI_ACCESS_CONTAINER = 0x00040000L + SI_ACCESS_PROPERTY = 0x00080000L + + # SI_PAGE_TYPE enum + SI_PAGE_PERM = 0 + SI_PAGE_ADVPERM = 1 + SI_PAGE_AUDIT = 2 + SI_PAGE_OWNER = 3 + SI_PAGE_EFFECTIVE =4 + + CFSTR_ACLUI_SID_INFO_LIST = u"CFSTR_ACLUI_SID_INFO_LIST" + PSPCB_SI_INITDIALOG = 1025 ## WM_USER+1 |
From: Roger U. <ru...@us...> - 2006-02-12 09:35:14
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26836/win32/src Modified Files: win32security_sspi.cpp Log Message: Doc improvements for SSPI objects Index: win32security_sspi.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32security_sspi.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** win32security_sspi.cpp 24 May 2005 13:55:30 -0000 1.4 --- win32security_sspi.cpp 12 Feb 2006 09:35:06 -0000 1.5 *************** *** 72,76 **** }; // ??? why isnt append included ??? ! // @object PySecBufferDesc|Sequence-like object that contains a group of buffers to be used with SSPI functions struct PyMethodDef PySecBufferDesc::methods[] = { {"append", PySecBufferDesc::append, 1}, // @pymeth append|Adds a <o PySecBuffer> to the list of buffers --- 72,78 ---- }; // ??? why isnt append included ??? ! // @object PySecBufferDesc|Sequence-like object that contains a group of buffers to be used with SSPI functions. ! // @comm This object is created using win32security.SecBufferDescType(Version), where Version is an int that ! // defaults to SECBUFFER_VERSION if not passed in. struct PyMethodDef PySecBufferDesc::methods[] = { {"append", PySecBufferDesc::append, 1}, // @pymeth append|Adds a <o PySecBuffer> to the list of buffers *************** *** 484,488 **** // //////////////////////////////////////////////////////////////////////// ! // @object PyCtxtHandle|Security context handle struct PyMethodDef PyCtxtHandle::methods[] = { {"Detach", PyCtxtHandle::Detach, 1}, // @pymeth Detach|Disassociates object from handle and returns integer value of handle --- 486,492 ---- // //////////////////////////////////////////////////////////////////////// ! // @object PyCtxtHandle|Security context handle, as used with sspi functions ! // @comm Create using win32security.CtxtHandleType(). The handle must be initialized by passing it to ! // <om win32security.InitializeSecurityContext> or <om win32security.AcceptSecurityContext> struct PyMethodDef PyCtxtHandle::methods[] = { {"Detach", PyCtxtHandle::Detach, 1}, // @pymeth Detach|Disassociates object from handle and returns integer value of handle *************** *** 1045,1051 **** ! // @object PyCredHandle|Wrapper for a credentials handle ! // @comm This object should be created using win32security.CredHandleType(), and will only be usable after it is ! // initialized by passing it to <om win32security.AcquireCredentialsHandle> struct PyMethodDef PyCredHandle::methods[] = { {"Detach", PyCredHandle::Detach, 1}, // @pymeth Detach|Disassociates object from handle and returns integer value of handle (prevents automatic freeing of credentials when object is deallocated), --- 1049,1055 ---- ! // @object PyCredHandle|Handle to a set of logon credentials, used with sspi authentication functions ! // @comm This object is usually created using <om win32security.AcquireCredentialsHandle>. ! // An uninitialized handle can also be created using win32security.CredHandleType() struct PyMethodDef PyCredHandle::methods[] = { {"Detach", PyCredHandle::Detach, 1}, // @pymeth Detach|Disassociates object from handle and returns integer value of handle (prevents automatic freeing of credentials when object is deallocated), |
From: Mark H. <mha...@us...> - 2006-02-11 06:02:55
|
Update of /cvsroot/pywin32/pywin32/com/win32com/demos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11063/win32com/demos Added Files: iebutton.py ietoolbar.py Log Message: Move the toolbar sample to a more obvious place, and add a new iebutton sample by Leonard Ritter and Robert Förtsch. --- NEW FILE: ietoolbar.py --- # encoding: latin-1 # PyWin32 Internet Explorer Toolbar # # written by Leonard Ritter (pa...@gm...) # and Robert Förtsch (in...@ro...) """ This sample implements a simple IE Toolbar COM server supporting Windows XP styles and access to the IWebBrowser2 interface. It also demonstrates how to hijack the parent window to catch WM_COMMAND messages. """ # imports section import sys, os from win32com import universal from win32com.client import gencache, DispatchWithEvents, Dispatch from win32com.client import constants, getevents import win32com import pythoncom import _winreg from win32com.shell import shell from win32com.shell.shellcon import * from win32com.axcontrol import axcontrol try: # try to get styles (winxp) import winxpgui as win32gui except: # import default module (win2k and lower) import win32gui import win32ui import win32con import commctrl import array, struct # ensure we know the ms internet controls typelib so we have access to IWebBrowser2 later on win32com.client.gencache.EnsureModule('{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}',0,1,1) # IDeskBand_methods = ['GetBandInfo'] IDockingWindow_methods = ['ShowDW','CloseDW','ResizeBorderDW'] IOleWindow_methods = ['GetWindow','ContextSensitiveHelp'] IInputObject_methods = ['UIActivateIO','HasFocusIO','TranslateAcceleratorIO'] IObjectWithSite_methods = ['SetSite','GetSite'] IPersistStream_methods = ['GetClassID','IsDirty','Load','Save','GetSizeMax'] _ietoolbar_methods_ = IDeskBand_methods + IDockingWindow_methods + \ IOleWindow_methods + IInputObject_methods + \ IObjectWithSite_methods + IPersistStream_methods _ietoolbar_com_interfaces_ = [ shell.IID_IDeskBand, # IDeskBand axcontrol.IID_IObjectWithSite, # IObjectWithSite pythoncom.IID_IPersistStream, axcontrol.IID_IOleCommandTarget, ] class WIN32STRUCT: def __init__(self, **kw): full_fmt = "" for name, fmt, default in self._struct_items_: self.__dict__[name] = None if fmt == "z": full_fmt += "pi" else: full_fmt += fmt for name, val in kw.items(): self.__dict__[name] = val def __setattr__(self, attr, val): if not attr.startswith("_") and not self.__dict__.has_key(attr): raise AttributeError, attr self.__dict__[attr] = val def toparam(self): self._buffs = [] full_fmt = "" vals = [] for name, fmt, default in self._struct_items_: val = self.__dict__[name] if fmt == "z": fmt = "Pi" if val is None: vals.append(0) vals.append(0) else: str_buf = array.array("c", val+'\0') vals.append(str_buf.buffer_info()[0]) vals.append(len(val)) self._buffs.append(str_buf) # keep alive during the call. else: if val is None: val = default vals.append(val) full_fmt += fmt return apply(struct.pack, (full_fmt,) + tuple(vals) ) class TBBUTTON(WIN32STRUCT): _struct_items_ = [ ("iBitmap", "i", 0), ("idCommand", "i", 0), ("fsState", "B", 0), ("fsStyle", "B", 0), ("bReserved", "H", 0), ("dwData", "I", 0), ("iString", "z", None), ] class Stub: """ this class serves as a method stub, outputting debug info whenever the object is being called. """ def __init__(self,name): self.name = name def __call__(self,*args): print 'STUB: ',self.name,args class IEToolbarCtrl: """ a tiny wrapper for our winapi-based toolbar control implementation. """ def __init__(self,hwndparent): styles = win32con.WS_CHILD \ | win32con.WS_VISIBLE \ | win32con.WS_CLIPSIBLINGS \ | win32con.WS_CLIPCHILDREN \ | commctrl.TBSTYLE_LIST \ | commctrl.TBSTYLE_FLAT \ | commctrl.TBSTYLE_TRANSPARENT \ | commctrl.CCS_TOP \ | commctrl.CCS_NODIVIDER \ | commctrl.CCS_NORESIZE \ | commctrl.CCS_NOPARENTALIGN self.hwnd = win32gui.CreateWindow('ToolbarWindow32', None, styles, 0, 0, 100, 100, hwndparent, 0, win32gui.dllhandle, None) win32gui.SendMessage(self.hwnd, commctrl.TB_BUTTONSTRUCTSIZE, 20, 0) def ShowWindow(self,mode): win32gui.ShowWindow(self.hwnd,mode) def AddButtons(self,*buttons): tbbuttons = '' for button in buttons: tbbuttons += button.toparam() return win32gui.SendMessage(self.hwnd, commctrl.TB_ADDBUTTONS, len(buttons), tbbuttons) def GetSafeHwnd(self): return self.hwnd class IEToolbar: """ The actual COM server class """ _com_interfaces_ = _ietoolbar_com_interfaces_ _public_methods_ = _ietoolbar_methods_ _reg_clsctx_ = pythoncom.CLSCTX_INPROC_SERVER # if you copy and modify this example, be sure to change the clsid below _reg_clsid_ = "{F21202A2-959A-4149-B1C3-68B9013F3335}" _reg_progid_ = "PyWin32.IEToolbar" _reg_desc_ = 'PyWin32 IE Toolbar' def __init__( self ): # put stubs for non-implemented methods for method in self._public_methods_: if not hasattr(self,method): print 'providing default stub for %s' % method setattr(self,method,Stub(method)) def GetWindow(self): return self.toolbar.GetSafeHwnd() def Load(self, stream): # called when the toolbar is loaded pass def Save(self, pStream, fClearDirty): # called when the toolbar shall save its information pass def CloseDW(self, dwReserved): del self.toolbar def ShowDW(self, bShow): if bShow: self.toolbar.ShowWindow(win32con.SW_SHOW) else: self.toolbar.ShowWindow(win32con.SW_HIDE) def on_first_button(self): print "first!" self.webbrowser.Navigate2('http://starship.python.net/crew/mhammond/') def on_second_button(self): print "second!" def on_third_button(self): print "third!" def toolbar_command_handler(self,args): hwnd,message,wparam,lparam,time,point = args if lparam == self.toolbar.GetSafeHwnd(): self._command_map[wparam]() def SetSite(self,unknown): if unknown: # retrieve the parent window interface for this site olewindow = unknown.QueryInterface(pythoncom.IID_IOleWindow) # ask the window for its handle hwndparent = olewindow.GetWindow() # first get a command target cmdtarget = unknown.QueryInterface(axcontrol.IID_IOleCommandTarget) # then travel over to a service provider serviceprovider = cmdtarget.QueryInterface(pythoncom.IID_IServiceProvider) # finally ask for the internet explorer application, returned as a dispatch object self.webbrowser = win32com.client.Dispatch(serviceprovider.QueryService('{0002DF05-0000-0000-C000-000000000046}',pythoncom.IID_IDispatch)) # now create and set up the toolbar self.toolbar = IEToolbarCtrl(hwndparent) buttons = [ ('Visit PyWin32 Homepage',self.on_first_button), ('Another Button', self.on_second_button), ('Yet Another Button', self.on_third_button), ] self._command_map = {} # wrap our parent window so we can hook message handlers window = win32ui.CreateWindowFromHandle(hwndparent) # add the buttons for i in range(len(buttons)): button = TBBUTTON() name,func = buttons[i] id = 0x4444+i button.iBitmap = -2 button.idCommand = id button.fsState = commctrl.TBSTATE_ENABLED button.fsStyle = commctrl.TBSTYLE_BUTTON button.iString = name self._command_map[0x4444+i] = func self.toolbar.AddButtons(button) window.HookMessage(self.toolbar_command_handler,win32con.WM_COMMAND) else: # lose all references self.webbrowser = None def GetClassID(self): return self._reg_clsid_ def GetBandInfo(self, dwBandId, dwViewMode, dwMask): ptMinSize = (0,24) ptMaxSize = (2000,24) ptIntegral = (0,0) ptActual = (2000,24) wszTitle = 'PyWin32 IE Toolbar' dwModeFlags = DBIMF_VARIABLEHEIGHT crBkgnd = 0 return (ptMinSize,ptMaxSize,ptIntegral,ptActual,wszTitle,dwModeFlags,crBkgnd) # used for HKLM install def DllInstall( bInstall, cmdLine ): comclass = IEToolbar # register plugin def DllRegisterServer(): comclass = IEToolbar # register toolbar with IE try: print "Trying to register Toolbar.\n" hkey = _winreg.CreateKey( _winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer\\Toolbar" ) subKey = _winreg.SetValueEx( hkey, comclass._reg_clsid_, 0, _winreg.REG_BINARY, "\0" ) except WindowsError: print "Couldn't set registry value.\nhkey: %d\tCLSID: %s\n" % ( hkey, comclass._reg_clsid_ ) else: print "Set registry value.\nhkey: %d\tCLSID: %s\n" % ( hkey, comclass._reg_clsid_ ) # TODO: implement reg settings for standard toolbar button # unregister plugin def DllUnregisterServer(): comclass = IEToolbar # unregister toolbar from internet explorer try: print "Trying to unregister Toolbar.\n" hkey = _winreg.CreateKey( _winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer\\Toolbar" ) _winreg.DeleteValue( hkey, comclass._reg_clsid_ ) except WindowsError: print "Couldn't delete registry value.\nhkey: %d\tCLSID: %s\n" % ( hkey, comclass._reg_clsid_ ) else: print "Deleting reg key succeeded.\n" # entry point if __name__ == '__main__': import win32com.server.register win32com.server.register.UseCommandLine( IEToolbar ) # parse actual command line option if "--unregister" in sys.argv: DllUnregisterServer() else: DllRegisterServer() else: # import trace utility for remote debugging import win32traceutil --- NEW FILE: iebutton.py --- # encoding: latin-1 # PyWin32 Internet Explorer Button # # written by Leonard Ritter (pa...@gm...) # and Robert Förtsch (in...@ro...) """ This sample implements a simple IE Button COM server with access to the IWebBrowser2 interface. """ # imports section import sys, os from win32com import universal from win32com.client import gencache, DispatchWithEvents, Dispatch from win32com.client import constants, getevents import win32com.server.register import win32com import pythoncom from win32com.axcontrol import axcontrol import array, struct # ensure we know the ms internet controls typelib so we have access to IWebBrowser2 later on win32com.client.gencache.EnsureModule('{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}',0,1,1) # IObjectWithSite_methods = ['SetSite','GetSite'] IOleCommandTarget_methods = ['Exec','QueryStatus'] _iebutton_methods_ = IOleCommandTarget_methods + IObjectWithSite_methods _iebutton_com_interfaces_ = [ axcontrol.IID_IOleCommandTarget, axcontrol.IID_IObjectWithSite, # IObjectWithSite ] class Stub: """ this class serves as a method stub, outputting debug info whenever the object is being called. """ def __init__(self,name): self.name = name def __call__(self,*args): print 'STUB: ',self.name,args class IEButton: """ The actual COM server class """ _com_interfaces_ = _iebutton_com_interfaces_ _public_methods_ = _iebutton_methods_ _reg_clsctx_ = pythoncom.CLSCTX_INPROC_SERVER _button_text_ = 'IE Button' _tool_tip_ = 'An example implementation for an IE Button.' _icon_ = '' _hot_icon_ = '' def __init__( self ): # put stubs for non-implemented methods for method in self._public_methods_: if not hasattr(self,method): print 'providing default stub for %s' % method setattr(self,method,Stub(method)) def QueryStatus (self, pguidCmdGroup, prgCmds, cmdtextf): # 'cmdtextf' is the 'cmdtextf' element from the OLECMDTEXT structure, # or None if a NULL pointer was passed. result = [] for id, flags in prgCmds: flags |= axcontrol.OLECMDF_SUPPORTED | axcontrol.OLECMDF_ENABLED result.append((id, flags)) if cmdtextf is None: cmdtext = None # must return None if nothing requested. # IE never seems to want any text - this code is here for # demo purposes only elif cmdtextf == axcontrol.OLECMDTEXTF_NAME: cmdtext = "IEButton Name" else: cmdtext = "IEButton State" return result, cmdtext def Exec(self, pguidCmdGroup, nCmdID, nCmdExecOpt, pvaIn): print pguidCmdGroup, nCmdID, nCmdExecOpt, pvaIn print "IOleCommandTarget::Exec called." #self.webbrowser.ShowBrowserBar(GUID_IETOOLBAR, not is_ietoolbar_visible()) def SetSite(self,unknown): if unknown: # first get a command target cmdtarget = unknown.QueryInterface(axcontrol.IID_IOleCommandTarget) # then travel over to a service provider serviceprovider = cmdtarget.QueryInterface(pythoncom.IID_IServiceProvider) # finally ask for the internet explorer application, returned as a dispatch object self.webbrowser = win32com.client.Dispatch(serviceprovider.QueryService('{0002DF05-0000-0000-C000-000000000046}',pythoncom.IID_IDispatch)) else: # lose all references self.webbrowser = None def GetClassID(self): return self._reg_clsid_ def register(classobj): import _winreg subKeyCLSID = "SOFTWARE\\Microsoft\\Internet Explorer\\Extensions\\%38s" % classobj._reg_clsid_ try: hKey = _winreg.CreateKey( _winreg.HKEY_LOCAL_MACHINE, subKeyCLSID ) subKey = _winreg.SetValueEx( hKey, "ButtonText", 0, _winreg.REG_SZ, classobj._button_text_ ) _winreg.SetValueEx( hKey, "ClsidExtension", 0, _winreg.REG_SZ, classobj._reg_clsid_ ) # reg value for calling COM object _winreg.SetValueEx( hKey, "CLSID", 0, _winreg.REG_SZ, "{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}" ) # CLSID for button that sends command to COM object _winreg.SetValueEx( hKey, "Default Visible", 0, _winreg.REG_SZ, "Yes" ) _winreg.SetValueEx( hKey, "ToolTip", 0, _winreg.REG_SZ, classobj._tool_tip_ ) _winreg.SetValueEx( hKey, "Icon", 0, _winreg.REG_SZ, classobj._icon_) _winreg.SetValueEx( hKey, "HotIcon", 0, _winreg.REG_SZ, classobj._hot_icon_) except WindowsError: print "Couldn't set standard toolbar reg keys." else: print "Set standard toolbar reg keys." def unregister(classobj): import _winreg subKeyCLSID = "SOFTWARE\\Microsoft\\Internet Explorer\\Extensions\\%38s" % classobj._reg_clsid_ try: hKey = _winreg.CreateKey( _winreg.HKEY_LOCAL_MACHINE, subKeyCLSID ) subKey = _winreg.DeleteValue( hKey, "ButtonText" ) _winreg.DeleteValue( hKey, "ClsidExtension" ) # for calling COM object _winreg.DeleteValue( hKey, "CLSID" ) _winreg.DeleteValue( hKey, "Default Visible" ) _winreg.DeleteValue( hKey, "ToolTip" ) _winreg.DeleteValue( hKey, "Icon" ) _winreg.DeleteValue( hKey, "HotIcon" ) _winreg.DeleteKey( _winreg.HKEY_LOCAL_MACHINE, subKeyCLSID ) except WindowsError: print "Couldn't delete Standard toolbar regkey." else: print "Deleted Standard toolbar regkey." # # test implementation # class PyWin32InternetExplorerButton(IEButton): _reg_clsid_ = "{104B66A9-9E68-49D1-A3F5-94754BE9E0E6}" _reg_progid_ = "PyWin32.IEButton" _reg_desc_ = 'Test Button' _button_text_ = 'IE Button' _tool_tip_ = 'An example implementation for an IE Button.' _icon_ = '' _hot_icon_ = _icon_ def DllRegisterServer(): register(PyWin32InternetExplorerButton) def DllUnregisterServer(): unregister(PyWin32InternetExplorerButton) if __name__ == '__main__': win32com.server.register.UseCommandLine(PyWin32InternetExplorerButton, finalize_register = DllRegisterServer, finalize_unregister = DllUnregisterServer) |
From: Mark H. <mha...@us...> - 2006-02-11 06:02:55
|
Update of /cvsroot/pywin32/pywin32/com/win32comext/shell/demos/servers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11063/win32comext/shell/demos/servers Removed Files: ietoolbar.py Log Message: Move the toolbar sample to a more obvious place, and add a new iebutton sample by Leonard Ritter and Robert Förtsch. --- ietoolbar.py DELETED --- |
From: Mark H. <mha...@us...> - 2006-02-11 03:47:11
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565 Modified Files: setup.py Log Message: Support for IProviderAdmin from John Nielsen, and at the same time remove the use of the .dsp file for the MAPI projects. Index: setup.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/setup.py,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** setup.py 12 Jan 2006 23:04:59 -0000 1.33 --- setup.py 11 Feb 2006 03:47:01 -0000 1.34 *************** *** 1,3 **** ! build_id="207" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) --- 1,3 ---- ! build_id="207.1" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) *************** *** 1098,1101 **** --- 1098,1102 ---- 'shell' : 'com/win32comext/shell/src', 'axcontrol' : 'com/win32comext/axcontrol/src', + 'mapi' : 'com/win32comext/mapi/src', } *************** *** 1151,1157 **** ), WinExt_win32com('internet'), ! WinExt_win32com('mapi', libraries="mapi32", pch_header="PythonCOM.h"), ! WinExt_win32com_mapi('exchange', libraries="version"), ! WinExt_win32com_mapi('exchdapi'), WinExt_win32com('shell', libraries='shell32', pch_header="shell_pch.h", sources=(""" --- 1152,1185 ---- ), WinExt_win32com('internet'), ! WinExt_win32com('mapi', libraries="mapi32", pch_header="PythonCOM.h", ! sources=(""" ! %(mapi)s/mapi.i %(mapi)s/mapi.cpp ! %(mapi)s/PyIABContainer.i %(mapi)s/PyIABContainer.cpp ! %(mapi)s/PyIAddrBook.i %(mapi)s/PyIAddrBook.cpp ! %(mapi)s/PyIAttach.i %(mapi)s/PyIAttach.cpp ! %(mapi)s/PyIDistList.i %(mapi)s/PyIDistList.cpp ! %(mapi)s/PyIMailUser.i %(mapi)s/PyIMailUser.cpp ! %(mapi)s/PyIMAPIContainer.i %(mapi)s/PyIMAPIContainer.cpp ! %(mapi)s/PyIMAPIFolder.i %(mapi)s/PyIMAPIFolder.cpp ! %(mapi)s/PyIMAPIProp.i %(mapi)s/PyIMAPIProp.cpp ! %(mapi)s/PyIMAPISession.i %(mapi)s/PyIMAPISession.cpp ! %(mapi)s/PyIMAPITable.i %(mapi)s/PyIMAPITable.cpp ! %(mapi)s/PyIMessage.i %(mapi)s/PyIMessage.cpp ! %(mapi)s/PyIMsgServiceAdmin.i %(mapi)s/PyIMsgServiceAdmin.cpp ! %(mapi)s/PyIMsgStore.i %(mapi)s/PyIMsgStore.cpp ! %(mapi)s/PyIProfAdmin.i %(mapi)s/PyIProfAdmin.cpp ! %(mapi)s/PyIProfSect.i %(mapi)s/PyIProfSect.cpp ! ! %(mapi)s/mapiutil.cpp ! %(mapi)s/mapiguids.cpp ! """ % dirs).split()), ! WinExt_win32com_mapi('exchange', libraries="version", ! sources=(""" ! %(mapi)s/exchange.i %(mapi)s/exchange.cpp ! """ % dirs).split()), ! WinExt_win32com_mapi('exchdapi', ! sources=(""" ! %(mapi)s/exchdapi.i %(mapi)s/exchdapi.cpp ! """ % dirs).split()), WinExt_win32com('shell', libraries='shell32', pch_header="shell_pch.h", sources=(""" |
From: Mark H. <mha...@us...> - 2006-02-11 03:47:11
|
Update of /cvsroot/pywin32/pywin32/com In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/com Removed Files: exchange.dsp exchdapi.dsp mapi.dsp Log Message: Support for IProviderAdmin from John Nielsen, and at the same time remove the use of the .dsp file for the MAPI projects. --- exchange.dsp DELETED --- --- mapi.dsp DELETED --- --- exchdapi.dsp DELETED --- |
From: Mark H. <mha...@us...> - 2006-02-11 03:47:11
|
Update of /cvsroot/pywin32/pywin32/com/win32comext/mapi/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/com/win32comext/mapi/src Modified Files: PyIMsgServiceAdmin.i mapiguids.cpp mapilib.i Added Files: PyIProviderAdmin.i Log Message: Support for IProviderAdmin from John Nielsen, and at the same time remove the use of the .dsp file for the MAPI projects. --- NEW FILE: PyIProviderAdmin.i --- /* File : PyIProviderAdmin.i */ %module IProviderAdmin // A COM interface to MAPI %include "typemaps.i" %include "pywin32.i" %include "pythoncom.i" %include "mapilib.i" %{ #include "PyIProviderAdmin.h" PyIProviderAdmin::PyIProviderAdmin(IUnknown *pDisp) : PyIUnknown(pDisp) { ob_type = &type; } PyIProviderAdmin::~PyIProviderAdmin() { } /*static*/ IProviderAdmin *PyIProviderAdmin::GetI(PyObject *self) { return (IProviderAdmin *)PyIUnknown::GetI(self); } %} // @pyswig |GetLastError|Returns a MAPIERROR structure containing information about the previous error on the table. HRESULT GetLastError(HRESULT hr, unsigned long flags, MAPIERROR **OUTPUT); // @pyswig <o PyIMAPITable>|GetProviderTable|Retrieves a table of service providers. HRESULT GetProviderTable( unsigned long ulFlags, // @pyparm int|flags|| IMAPITable **OUTPUT ); // @pyswig |DeleteProvider|Deletes the service provider from message service HRESULT DeleteProvider( MAPIUID *INPUT // @pyparm <o PyIID>|uuid||The ID of the provider ); // @pyswig <o PyIProfSect>|OpenProfileSection| HRESULT OpenProfileSection( MAPIUID *INPUT, // @pyparm <o PyIID>|uuid||The ID of the service IID *INPUT_NULLOK, // @pyparm <o PyIID>|iid||The IID of the resulting object, or None for the default unsigned long ulFlags, // @pyparm int|flags|| IProfSect **OUTPUT ); %{ // as defined in MSDN, exerything [in] except last arg is [out] // HRESULT CreateProvider(LPTSTR lpszProvider,ULONG cValues,LPSPropValue lpProps,ULONG ulUIParam,ULONG ulFlags,MAPIUID FAR * lpUID); // @pyswig <o PyIID>|CreateProvider|Add a service provider to a message service. PyObject *PyIProviderAdmin::CreateProvider(PyObject *self, PyObject *args) { HRESULT hr;IProviderAdmin *_swig_self; //Handle the 5 input variables TCHAR * lpszProvider;unsigned long cValues;PyObject *py_props;unsigned long ulUIParam;unsigned long ulFlags; //Parse the 5 input variables from Python input if(!PyArg_ParseTuple(args,"slOll",&lpszProvider,&cValues,&py_props,&ulUIParam,&ulFlags)) { return NULL; } //handle spropvalue structure SPropValue *pPropValue;ULONG len; if (py_props==Py_None) { pPropValue = NULL; cValues = 0; } else { if (!PyMAPIObject_AsSPropValueArray(py_props, &pPropValue, &len)) return NULL; } //Setup output variable CLSID iid; MAPIUID *pMAPIUID = (MAPIUID *)&iid; if ((_swig_self=GetI(self))==NULL) return NULL; Py_BEGIN_ALLOW_THREADS hr = (HRESULT )_swig_self->CreateProvider(lpszProvider,cValues,pPropValue,ulUIParam,ulFlags,pMAPIUID); Py_END_ALLOW_THREADS MAPIFreeBuffer(pPropValue); if (FAILED(hr)) { return NULL;} GUID *pTemp = (GUID *)&iid; PyObject *obiid = PyWinObject_FromIID(*pTemp); if (!obiid) return NULL; return obiid; } %} %native (CreateProvider) CreateProvider; Index: PyIMsgServiceAdmin.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32comext/mapi/src/PyIMsgServiceAdmin.i,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PyIMsgServiceAdmin.i 1 Sep 1999 23:17:16 -0000 1.1 --- PyIMsgServiceAdmin.i 11 Feb 2006 03:47:02 -0000 1.2 *************** *** 1,4 **** /* File : PyIMsgServiceAdmin.i */ ! %module IMsgServiceAdmin // An COM interface to MAPI's IMsgServiceAdmin interface. --- 1,4 ---- /* File : PyIMsgServiceAdmin.i */ ! %module IMsgServiceAdmin // An COM interface to MAPI's IMsgServiceAdmin interface. *************** *** 113,115 **** unsigned long ulFlags, // @pyparm int|flags|| IProfSect **OUTPUT ! ); \ No newline at end of file --- 113,123 ---- unsigned long ulFlags, // @pyparm int|flags|| IProfSect **OUTPUT ! ); ! ! // @pyswig <o PyIProfSect>|AdminProviders|Returns an object providing access ! // to a provider administration object. ! HRESULT AdminProviders( ! MAPIUID *INPUT, // @pyparm <o PyIID>|uuid||The ID of the service ! unsigned long ulFlags, // @pyparm int|flags|| ! IProviderAdmin **OUTPUT ! ); Index: mapilib.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32comext/mapi/src/mapilib.i,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** mapilib.i 1 Sep 2003 08:05:36 -0000 1.2 --- mapilib.i 11 Feb 2006 03:47:02 -0000 1.3 *************** *** 67,70 **** --- 67,74 ---- $target = &temp; } + %typemap(python,ignore) IProviderAdmin **OUTPUT(IProviderAdmin *temp) + { + $target = &temp; + } %typemap(python,ignore) IMAPIAdviseSink **OUTPUT(IMAPIAdviseSink *temp) { *************** *** 115,118 **** --- 119,125 ---- MAKE_OUTPUT_INTERFACE($source, $target, IID_IProfSect) } + %typemap(python,argout) IProviderAdmin **OUTPUT { + MAKE_OUTPUT_INTERFACE($source, $target, IID_IProviderAdmin) + } %typemap(python,argout) IMAPIAdviseSink **OUTPUT { MAKE_OUTPUT_INTERFACE($source, $target, IID_IMAPIAdviseSink) *************** *** 149,152 **** --- 156,161 ---- IProfSect *INPUT, IProfSect *INPUT_NULLOK, + IProviderAdmin *INPUT, + IProviderAdmin *INPUT_NULLOK, IMAPIAdviseSink *INPUT, IMAPIAdviseSink *INPUT_NULLOK, *************** *** 258,261 **** --- 267,280 ---- } + %typemap(python,in) IProviderAdmin *INPUT { + if (!PyCom_InterfaceFromPyInstanceOrObject($source, IID_IProviderAdmin, (void **)&$target, 0)) + return NULL; + } + + %typemap(python,in) IProviderAdmin *INPUT_NULLOK { + if (!PyCom_InterfaceFromPyInstanceOrObject($source, IID_IProviderAdmin, (void **)&$target, 1)) + return NULL; + } + %typemap(python,in) IAddrBook *INPUT { if (!PyCom_InterfaceFromPyInstanceOrObject($source, IID_IAddrBook, (void **)&$target, 0)) Index: mapiguids.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32comext/mapi/src/mapiguids.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** mapiguids.cpp 1 Sep 1999 23:17:16 -0000 1.1 --- mapiguids.cpp 11 Feb 2006 03:47:02 -0000 1.2 *************** *** 19,22 **** --- 19,23 ---- #define USES_IID_IProfSect #define USES_IID_IMsgServiceAdmin + #define USES_IID_IProviderAdmin |
From: Mark H. <mha...@us...> - 2006-02-05 07:33:07
|
Update of /cvsroot/pywin32/pywin32/Pythonwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25907 Modified Files: stddde.cpp Log Message: Hopefully fix "bug [ 1414160 ] DDE sets off DEP", by not defining _CALLHACK_ (and thereby disabling support for multiple DDE servers in the same process.) Index: stddde.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/Pythonwin/stddde.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** stddde.cpp 6 Oct 2004 05:18:54 -0000 1.3 --- stddde.cpp 5 Feb 2006 07:32:58 -0000 1.4 *************** *** 2,6 **** // From KB Article ID: Q92829 ! #define _CALLHACK_ #include "stdafxdde.h" --- 2,9 ---- // From KB Article ID: Q92829 ! // See pywin32 bug [ 1414160 ] DDE sets off DEP (in demos and pythonwin too) ! // _CALLHACK_ appears to be the cause :( ! // #define _CALLHACK_ ! #include "stdafxdde.h" |
From: Mark H. <mha...@us...> - 2006-02-05 07:27:51
|
Update of /cvsroot/pywin32/pywin32/com/win32com/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24676 Modified Files: oleargs.cpp Log Message: PyCom_PyObjectFromVariant checks for NULL input variant and returns None. Index: oleargs.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/oleargs.cpp,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** oleargs.cpp 19 Dec 2005 04:46:44 -0000 1.32 --- oleargs.cpp 5 Feb 2006 07:27:43 -0000 1.33 *************** *** 207,210 **** --- 207,214 ---- PyObject * result = NULL; + if (!var) { + Py_INCREF(Py_None); + return Py_None; + } /* skip past any variant references to a "real" variant (Why do we do this? Why is it only a VARIANT? whats the story, morning glory? |
From: Roger U. <ru...@us...> - 2006-02-02 08:25:39
|
Update of /cvsroot/pywin32/pywin32/win32/src/win32net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25789/win32/src/win32net Modified Files: win32netmodule.cpp Log Message: In PyObject_AsNET_STRUCT, check if input security descriptor is NULL before trying to copy it Index: win32netmodule.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32net/win32netmodule.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** win32netmodule.cpp 29 Aug 2005 09:51:45 -0000 1.21 --- win32netmodule.cpp 2 Feb 2006 08:25:30 -0000 1.22 *************** *** 182,188 **** } PSECURITY_DESCRIPTOR *ppSDdest = ((PSECURITY_DESCRIPTOR *)(buf+pItem->off)); ! size_t len = GetSecurityDescriptorLength(pSDsrc); ! *ppSDdest = (PSECURITY_DESCRIPTOR)malloc(len); ! memcpy(*ppSDdest, pSDsrc, len); } break; --- 182,192 ---- } PSECURITY_DESCRIPTOR *ppSDdest = ((PSECURITY_DESCRIPTOR *)(buf+pItem->off)); ! if (pSDsrc==NULL) ! *ppSDdest=NULL; ! else{ ! size_t len = GetSecurityDescriptorLength(pSDsrc); ! *ppSDdest = (PSECURITY_DESCRIPTOR)malloc(len); ! memcpy(*ppSDdest, pSDsrc, len); ! } } break; |
From: Trent M. <tm...@us...> - 2006-01-12 23:05:09
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14766 Modified Files: setup.py Log Message: Fix "unresolved externals" error building 'adsi'. https://sourceforge.net/tracker/index.php?func=detail&aid=1404103&group_id=78018&atid=551956 r=markh Index: setup.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/setup.py,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** setup.py 12 Jan 2006 18:13:53 -0000 1.32 --- setup.py 12 Jan 2006 23:04:59 -0000 1.33 *************** *** 1113,1117 **** com_extensions = [pythoncom] com_extensions += [ ! WinExt_win32com('adsi', libraries="ACTIVEDS ADSIID", sources=(""" %(adsi)s/adsi.i %(adsi)s/adsi.cpp --- 1113,1117 ---- com_extensions = [pythoncom] com_extensions += [ ! WinExt_win32com('adsi', libraries="ACTIVEDS ADSIID user32 advapi32", sources=(""" %(adsi)s/adsi.i %(adsi)s/adsi.cpp |
From: Trent M. <tm...@us...> - 2006-01-12 18:14:03
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14534 Modified Files: setup.py Log Message: Allow build to work without INCLUDE or LIB envvars defined. Index: setup.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/setup.py,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** setup.py 11 Jan 2006 01:31:41 -0000 1.31 --- setup.py 12 Jan 2006 18:13:53 -0000 1.32 *************** *** 403,407 **** if self.windows_h_version is None: include_dirs = self.compiler.include_dirs + \ ! os.environ.get("INCLUDE").split(os.pathsep) for d in include_dirs: look = os.path.join(d, "WINDOWS.H") --- 403,407 ---- if self.windows_h_version is None: include_dirs = self.compiler.include_dirs + \ ! os.environ.get("INCLUDE", "").split(os.pathsep) for d in include_dirs: look = os.path.join(d, "WINDOWS.H") *************** *** 441,445 **** common_dirs = self.compiler.library_dirs[:] ! common_dirs += os.environ.get("LIB").split(os.pathsep) patched_libs = [] for lib in ext.libraries: --- 441,445 ---- common_dirs = self.compiler.library_dirs[:] ! common_dirs += os.environ.get("LIB", "").split(os.pathsep) patched_libs = [] for lib in ext.libraries: |
From: Roger U. <ru...@us...> - 2006-01-12 15:22:12
|
Update of /cvsroot/pywin32/pywin32/com/win32comext/shell/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv999/com/win32comext/shell/test Added Files: testSHFileOperation.py Log Message: Test SHFileOperation using single and multiple file names --- NEW FILE: testSHFileOperation.py --- from win32com.shell import shell, shellcon import win32api import os def testSHFileOperation(file_cnt): temp_dir=os.environ['temp'] orig_fnames=[win32api.GetTempFileName(temp_dir,'sfo')[0] for x in range(file_cnt)] new_fnames=[os.path.join(temp_dir,'copy of '+os.path.split(orig_fnames[x])[1]) for x in range(file_cnt)] pFrom='\0'.join(orig_fnames) pTo='\0'.join(new_fnames) shell.SHFileOperation((0, shellcon.FO_MOVE, pFrom, pTo, shellcon.FOF_MULTIDESTFILES|shellcon.FOF_NOCONFIRMATION)) for fname in orig_fnames: assert not os.path.isfile(fname) for fname in new_fnames: assert os.path.isfile(fname) shell.SHFileOperation((0, shellcon.FO_DELETE, fname, None, shellcon.FOF_NOCONFIRMATION|shellcon.FOF_NOERRORUI)) testSHFileOperation(10) testSHFileOperation(1) |
From: Roger U. <ru...@us...> - 2006-01-12 15:20:39
|
Update of /cvsroot/pywin32/pywin32/com/win32comext/shell/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv689/com/win32comext/shell/src Modified Files: shell.cpp Log Message: Allow SHFileOperation to accept a string containing multiple file names, and some doc improvements Index: shell.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32comext/shell/src/shell.cpp,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** shell.cpp 29 Nov 2005 02:24:16 -0000 1.41 --- shell.cpp 12 Jan 2006 15:20:31 -0000 1.42 *************** *** 436,442 **** --- 436,453 ---- } + // @object PyCMINVOKECOMMANDINFO|A tuple of parameters to be converted to a CMINVOKECOMMANDINFO struct + // @tupleitem 0|int|Mask|Combination of shellcon.CMIC_MASK_* constants, can be 0 + // @tupleitem 1|<o PyHANDLE>|hwnd|Window that owns the shortcut menu + // @tupleitem 2|int or str|Vert|Action to be carried out, specified as a string command or integer menu item id + // @tupleitem 3|str|Parameters|Extra parameters to be passed to the command line for the action, can be None + // @tupleitem 4|str|Directory|Working directory, can be None + // @tupleitem 5|int|Show|Combination of win32con.SW_* constants for any windows that may be created + // @tupleitem 6|int|HotKey|Hot key for any application that may be started + // @tupleitem 7|<o PyHANDLE>|Icon|Handle to icon to use for application, can be None BOOL PyObject_AsCMINVOKECOMMANDINFO(PyObject *ob, CMINVOKECOMMANDINFO *pci) { PyObject *obVerb; + ZeroMemory(pci, sizeof(CMINVOKECOMMANDINFO)); + pci->cbSize=sizeof(CMINVOKECOMMANDINFO); if (!PyArg_ParseTuple(ob, "iiOzziii:CMINVOKECOMMANDINFO tuple", &pci->fMask, &pci->hwnd, &obVerb, &pci->lpParameters, &pci->lpDirectory, *************** *** 748,775 **** return TRUE; } ! if (PyString_Check(ob) || PyUnicode_Check(ob)) { ! // single string specified. ! DWORD len; ! TCHAR *sz; ! if (!PyWinObject_AsTCHAR(ob, &sz, FALSE, &len)) ! return FALSE; ! *ret = (TCHAR *)malloc( sizeof(TCHAR) * (len+2) ); ! if (!*ret) ! PyErr_NoMemory(); ! else { ! _tcscpy(*ret, sz); ! (*ret)[len+1] = '\0'; // second term. ! } PyWinObject_FreeTCHAR(sz); ! return TRUE; ! } ! ! if (!PySequence_Check(ob)) { ! PyErr_Format(PyExc_TypeError, ! "Must be a string or sequence of strings (got '%s')", ob->ob_type->tp_name); return FALSE; } ! PyErr_Format(PyExc_RuntimeError, "Sequences of names not yet supported"); ! return FALSE; } --- 759,776 ---- return TRUE; } ! DWORD len; ! TCHAR *sz; ! if (!PyWinObject_AsTCHAR(ob, &sz, FALSE, &len)) ! return FALSE; ! *ret = (TCHAR *)malloc( sizeof(TCHAR) * (len+2) ); ! if (!*ret){ PyWinObject_FreeTCHAR(sz); ! PyErr_NoMemory(); return FALSE; } ! memcpy(*ret, sz, sizeof(TCHAR) * (len+1)); ! (*ret)[len+1] = '\0'; // second term. ! PyWinObject_FreeTCHAR(sz); ! return TRUE; } *************** *** 784,788 **** } ! // @object SHFILEOPSTRUCT|A tuple representing a Win32 shell SHFILEOPSTRUCT structure. BOOL PyObject_AsSHFILEOPSTRUCT(PyObject *ob, SHFILEOPSTRUCT *p) { --- 785,792 ---- } ! // @object SHFILEOPSTRUCT|A tuple representing a Win32 shell SHFILEOPSTRUCT structure, used with <om shell.SHFileOperation> ! // @comm From and To can contain multiple file names concatenated with a single null between them, eg ! // "c:\\file1.txt\0c:\\file2.txt". A double null terminator will be appended automatically. ! // If To specifies multiple file names, flags must contain FOF_MULTIDESTFILES BOOL PyObject_AsSHFILEOPSTRUCT(PyObject *ob, SHFILEOPSTRUCT *p) { *************** *** 790,804 **** memset(p, 0, sizeof(*p)); if (!PyArg_ParseTuple(ob, "iiOO|iOO", ! &p->hwnd, // @tupleitem 0|int|hwnd| ! &p->wFunc, // @tupleitem 1|int|wFunc| ! &obFrom, // @tupleitem 2|string/list of stringsfrom|obFrom| ! &obTo, // @tupleitem 3|string/list of strings|to| ! &p->fFlags, // @tupleitem 4|int|flags|Default=0 ! &obNameMappings, // @tupleitem 5|None|nameMappings|Default=None ! &obProgressTitle)) // @tupleitem 6|string|progressTitle|Default=None return FALSE; if (obNameMappings != Py_None) { ! PyErr_SetString(PyExc_TypeError, "The nameMappings value must be None"); return FALSE; } --- 794,808 ---- memset(p, 0, sizeof(*p)); if (!PyArg_ParseTuple(ob, "iiOO|iOO", ! &p->hwnd, // @tupleitem 0|int|hwnd|Handle of window in which to display status messages ! &p->wFunc, // @tupleitem 1|int|wFunc|One of the shellcon.FO_* values ! &obFrom, // @tupleitem 2|str/unicode|From|String containing source file name(s) separated by nulls ! &obTo, // @tupleitem 3|str/unicode|To|String containing destination file name(s) separated by nulls, can be None ! &p->fFlags, // @tupleitem 4|int|flags|Combination of shellcon.FOF_* flags. Default=0 ! &obNameMappings, // @tupleitem 5|None|NameMappings|Maps input file names to their new names, must be None. Default=None ! &obProgressTitle)) // @tupleitem 6|string|ProgressTitle|Title for progress dialog (flags must contain FOF_SIMPLEPROGRESS). Default=None return FALSE; if (obNameMappings != Py_None) { ! PyErr_SetString(PyExc_TypeError, "The NameMappings value must be None"); return FALSE; } *************** *** 820,824 **** // // WIN32_FIND_DATA implementation. ! // NOTE: Cloned from win32api.cpp PyObject *PyObject_FromWIN32_FIND_DATA(WIN32_FIND_DATA &findData) { --- 824,829 ---- // // WIN32_FIND_DATA implementation. ! // NOTE: Cloned from win32api.cpp - Also exists in win32file ! ! // @object WIN32_FIND_DATA|A tuple representing a Win32 WIN32_FIND_DATA structure. PyObject *PyObject_FromWIN32_FIND_DATA(WIN32_FIND_DATA &findData) { |
From: Mark H. <mha...@us...> - 2006-01-11 01:31:51
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13612 Modified Files: CHANGES.txt setup.py Log Message: Build 207 Index: setup.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/setup.py,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** setup.py 10 Jan 2006 06:53:36 -0000 1.30 --- setup.py 11 Jan 2006 01:31:41 -0000 1.31 *************** *** 1,3 **** ! build_id="206" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) --- 1,3 ---- ! build_id="207" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) Index: CHANGES.txt =================================================================== RCS file: /cvsroot/pywin32/pywin32/CHANGES.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CHANGES.txt 10 Jan 2006 06:53:36 -0000 1.3 --- CHANGES.txt 11 Jan 2006 01:31:41 -0000 1.4 *************** *** 6,9 **** --- 6,14 ---- However contributors are encouraged to add their own entries for their work. + Build 207 + -------- + * Fix an error in win32gui.CreateDC() arg handling, introduced with the + Windows CE changes in build 206. + Build 206 -------- |
From: Mark H. <mha...@us...> - 2006-01-11 00:26:01
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23087 Modified Files: win32gui.i Log Message: *sigh* - fix whitespace in previous checkin. Index: win32gui.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32gui.i,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -d -r1.76 -r1.77 *** win32gui.i 11 Jan 2006 00:10:18 -0000 1.76 --- win32gui.i 11 Jan 2006 00:25:51 -0000 1.77 *************** *** 3801,3830 **** static PyObject *PyCreateDC(PyObject *self, PyObject *args) { ! PDEVMODE pdevmode; ! PyObject *obdevmode=NULL; ! PyObject *obdriver, *obdevice; ! char *driver, *device, *dummyoutput=NULL; ! HDC hdc; ! if (!PyArg_ParseTuple(args, "OOO", &obdriver, &obdevice, &obdevmode)) ! return NULL; ! if (!PyWinObject_AsDEVMODE(obdevmode, &pdevmode, TRUE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdriver, &driver, FALSE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdevice, &device, TRUE)) { PyWinObject_FreeTCHAR(driver); ! return NULL; ! } ! PyObject *ret; ! hdc=CreateDC(driver, device, dummyoutput, pdevmode); ! if (hdc!=NULL) ! ret = Py_BuildValue("l",hdc); ! else { ! PyWin_SetAPIError("CreateDC",GetLastError()); ! ret = NULL; ! } ! PyWinObject_FreeTCHAR(driver); ! PyWinObject_FreeTCHAR(device); ! return ret; } %} --- 3801,3830 ---- static PyObject *PyCreateDC(PyObject *self, PyObject *args) { ! PDEVMODE pdevmode; ! PyObject *obdevmode=NULL; ! PyObject *obdriver, *obdevice; ! char *driver, *device, *dummyoutput=NULL; ! HDC hdc; ! if (!PyArg_ParseTuple(args, "OOO", &obdriver, &obdevice, &obdevmode)) ! return NULL; ! if (!PyWinObject_AsDEVMODE(obdevmode, &pdevmode, TRUE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdriver, &driver, FALSE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdevice, &device, TRUE)) { ! PyWinObject_FreeTCHAR(driver); ! return NULL; ! } ! PyObject *ret; ! hdc=CreateDC(driver, device, dummyoutput, pdevmode); ! if (hdc!=NULL) ! ret = Py_BuildValue("l",hdc); ! else { ! PyWin_SetAPIError("CreateDC",GetLastError()); ! ret = NULL; ! } PyWinObject_FreeTCHAR(driver); ! PyWinObject_FreeTCHAR(device); ! return ret; } %} |
From: Mark H. <mha...@us...> - 2006-01-11 00:10:28
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17954/win32/src Modified Files: win32gui.i Log Message: Fix a regression in win32gui.CreateDC() Index: win32gui.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32gui.i,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -d -r1.75 -r1.76 *** win32gui.i 10 Jan 2006 05:37:50 -0000 1.75 --- win32gui.i 11 Jan 2006 00:10:18 -0000 1.76 *************** *** 3796,3800 **** // @pyparm string|Device||Name of specific device, eg printer name returned from GetDefaultPrinter // @pyparm <o PyDEVMODE>|InitData||A PyDEVMODE that specifies printing parameters, use None for printer defaults ! HDC CreateDC(TCHAR *INPUT_NULLOK, TCHAR *INPUT_NULLOK, TCHAR *INPUT, DEVMODE *INPUT); %{ --- 3796,3832 ---- // @pyparm string|Device||Name of specific device, eg printer name returned from GetDefaultPrinter // @pyparm <o PyDEVMODE>|InitData||A PyDEVMODE that specifies printing parameters, use None for printer defaults ! ! %native (CreateDC) PyCreateDC; ! %{ ! static PyObject *PyCreateDC(PyObject *self, PyObject *args) ! { ! PDEVMODE pdevmode; ! PyObject *obdevmode=NULL; ! PyObject *obdriver, *obdevice; ! char *driver, *device, *dummyoutput=NULL; ! HDC hdc; ! if (!PyArg_ParseTuple(args, "OOO", &obdriver, &obdevice, &obdevmode)) ! return NULL; ! if (!PyWinObject_AsDEVMODE(obdevmode, &pdevmode, TRUE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdriver, &driver, FALSE)) ! return NULL; ! if (!PyWinObject_AsTCHAR(obdevice, &device, TRUE)) { ! PyWinObject_FreeTCHAR(driver); ! return NULL; ! } ! PyObject *ret; ! hdc=CreateDC(driver, device, dummyoutput, pdevmode); ! if (hdc!=NULL) ! ret = Py_BuildValue("l",hdc); ! else { ! PyWin_SetAPIError("CreateDC",GetLastError()); ! ret = NULL; ! } ! PyWinObject_FreeTCHAR(driver); ! PyWinObject_FreeTCHAR(device); ! return ret; ! } ! %} %{ |
From: Mark H. <mha...@us...> - 2006-01-10 06:53:44
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3189 Modified Files: CHANGES.txt MANIFEST.in setup.py Log Message: Build 206 Index: setup.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/setup.py,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** setup.py 3 Dec 2005 03:46:15 -0000 1.29 --- setup.py 10 Jan 2006 06:53:36 -0000 1.30 *************** *** 1,3 **** ! build_id="205.1" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) --- 1,3 ---- ! build_id="206" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) Index: MANIFEST.in =================================================================== RCS file: /cvsroot/pywin32/pywin32/MANIFEST.in,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** MANIFEST.in 2 May 2005 12:10:45 -0000 1.9 --- MANIFEST.in 10 Jan 2006 06:53:36 -0000 1.10 *************** *** 17,20 **** --- 17,22 ---- include win32/test/*.py include win32/Demos/*.py + include win32/Demos/security/*.py + include win32/Demos/security/sspi/*.py include win32/src/*.h include win32/src/*.manifest Index: CHANGES.txt =================================================================== RCS file: /cvsroot/pywin32/pywin32/CHANGES.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CHANGES.txt 2 Dec 2005 07:55:13 -0000 1.2 --- CHANGES.txt 10 Jan 2006 06:53:36 -0000 1.3 *************** *** 6,9 **** --- 6,40 ---- However contributors are encouraged to add their own entries for their work. + Build 206 + -------- + * Prevent the "display name" of a COM object ever being Unicode and + therefore a possible cause of unexpected Unicode decode errors. + * Correct and document behaviour of CoInitializeEx/CoInitialize exception + throwing behaviour - previously a failure would leave a stale Python + exception. + * Fix memory leak when doing str(PySID) (Roger Upole) + * New IE Toolbar demo contributed by Leonard Ritter, plus a few new + AXControl related interfaces that were necessary. + * win32timezone now works in non-English Windows versions. timezone + objects can now be pickled (Jason Coombs) + * Prevent stale Windows errors causing win32api.GetConsoleTitle() to fail. + * Remove workaround for Python bug so we again write a file encoding to + makepy generated files in all Python versions. + * New win32gui function CreateIconFromResource. + * Add win32file.QueryDosDevice (Roger Upole) + * Fix error when using win32pipe in a "bundled" py2exe app. + * Better support for py2exe based services, including debugging support. + * Add support for all VARIANT types in COM arrays (a few were missing) + * GetBitmapBits() can return a string or a list (a string being *much* + faster) + * Fix win32gui taskbar demo to handle the fact explorer may not (yet) be + running. + * win32 directory should again build on Windows CE (Luke Dunstan) + * Support for IGlobalInterfaceTable (Stefan Schukat) + * A number of pythonwin framework enhancements (Adal Chiriliuc) + * Better Auto-Complete list in pythonwin for COM objects (Jerry Gamache) + * win32api.GetVersionEx takes an optional param - if 1, we return a longer + tuple representing the OSVERSIONINFOEX structure. + Build 205 --------- |
From: Mark H. <mha...@us...> - 2006-01-10 06:33:07
|
Update of /cvsroot/pywin32/pywin32/com/win32com/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv855 Modified Files: testShell.py Log Message: Don't have the test fail just because they have few links on their desktop Index: testShell.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/test/testShell.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** testShell.py 13 Feb 2005 12:01:20 -0000 1.7 --- testShell.py 10 Jan 2006 06:32:58 -0000 1.8 *************** *** 29,33 **** unc = shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0] num += 1 ! self.failIf(num<3, "Only found %d items on the desktop??" % num) def testShellFolder(self): --- 29,35 ---- unc = shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0] num += 1 ! if num == 0: ! # This isn't a fatal error, but is unlikely. ! print "Could not find any links on your desktop, which is unusual" def testShellFolder(self): |
From: Mark H. <mha...@us...> - 2006-01-10 06:32:25
|
Update of /cvsroot/pywin32/pywin32/com/win32com/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv788 Modified Files: testExplorer.py Log Message: Ignore exceptions shutting down explorer - it just means the user already did Index: testExplorer.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/test/testExplorer.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** testExplorer.py 1 Mar 2003 00:14:01 -0000 1.5 --- testExplorer.py 10 Jan 2006 06:32:18 -0000 1.6 *************** *** 50,54 **** # iexplore.Navigate(win32api.GetFullPathName(fname)) win32api.Sleep(4000) ! iexplore.Quit() def TestAll(): --- 50,58 ---- # iexplore.Navigate(win32api.GetFullPathName(fname)) win32api.Sleep(4000) ! try: ! iexplore.Quit() ! except (AttributeError, pythoncom.com_error): ! # User got sick of waiting :) ! pass def TestAll(): |
From: Mark H. <mha...@us...> - 2006-01-10 06:31:46
|
Update of /cvsroot/pywin32/pywin32/com/win32com/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv705 Modified Files: testPippo.py Log Message: Always register the server to ensure we have the current Python version. Index: testPippo.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/test/testPippo.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** testPippo.py 7 Sep 2004 02:10:13 -0000 1.2 --- testPippo.py 10 Jan 2006 06:31:38 -0000 1.3 *************** *** 7,17 **** class PippoTester(unittest.TestCase): def setUp(self): ! try: ! self.object = Dispatch("Python.Test.Pippo") ! except pythoncom.com_error: ! # register the server ! import pippo_server ! pippo_server.main([pippo_server.__file__]) ! self.object = Dispatch("Python.Test.Pippo") def testLeaks(self): --- 7,15 ---- class PippoTester(unittest.TestCase): def setUp(self): ! # register the server ! import pippo_server ! pippo_server.main([pippo_server.__file__]) ! # create it. ! self.object = Dispatch("Python.Test.Pippo") def testLeaks(self): |
From: Mark H. <mha...@us...> - 2006-01-10 06:13:54
|
Update of /cvsroot/pywin32/pywin32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30945 Modified Files: Python and Extensions.dsw Log Message: Remove a couple of deleted .dsp files. Index: Python and Extensions.dsw =================================================================== RCS file: /cvsroot/pywin32/pywin32/Python and Extensions.dsw,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Python and Extensions.dsw 30 Nov 2004 21:30:27 -0000 1.19 --- Python and Extensions.dsw 10 Jan 2006 06:13:45 -0000 1.20 *************** *** 280,298 **** ############################################################################### - Project: "axcontrol"=.\com\axcontrol.dsp - Package Owner=<4> - - Package=<5> - {{{ - }}} - - Package=<4> - {{{ - Begin Project Dependency - Project_Dep_Name win32com - End Project Dependency - }}} - - ############################################################################### - Project: "dbi"=.\win32\dbi.dsp - Package Owner=<4> --- 280,283 ---- *************** *** 481,499 **** ############################################################################### - Project: "shell"=.\com\shell.dsp - Package Owner=<4> - - Package=<5> - {{{ - }}} - - Package=<4> - {{{ - Begin Project Dependency - Project_Dep_Name win32com - End Project Dependency - }}} - - ############################################################################### - Project: "taskscheduler"=.\com\taskscheduler.dsp - Package Owner=<4> --- 466,469 ---- |
From: Mark H. <mha...@us...> - 2006-01-10 05:39:04
|
Update of /cvsroot/pywin32/pywin32/Pythonwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26822 Modified Files: win32uiExt.h Log Message: autoduck correction. Index: win32uiExt.h =================================================================== RCS file: /cvsroot/pywin32/pywin32/Pythonwin/win32uiExt.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** win32uiExt.h 10 Jan 2006 04:26:07 -0000 1.7 --- win32uiExt.h 10 Jan 2006 05:38:56 -0000 1.8 *************** *** 225,229 **** afx_msg void OnTimer(UINT nIDEvent) { // @pyvirtual void|PyCWnd|OnTimer|Called for the WM_TIMER message. ! // @pyparm <int>|nIDEvent||Specifies the identifier of the timer. CVirtualHelper helper( "OnTimer", this ); if (!helper.HaveHandler() || !helper.call(static_cast<int>(nIDEvent))) --- 225,229 ---- afx_msg void OnTimer(UINT nIDEvent) { // @pyvirtual void|PyCWnd|OnTimer|Called for the WM_TIMER message. ! // @pyparm int|nIDEvent||Specifies the identifier of the timer. CVirtualHelper helper( "OnTimer", this ); if (!helper.HaveHandler() || !helper.call(static_cast<int>(nIDEvent))) |
From: Mark H. <mha...@us...> - 2006-01-10 05:38:00
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26615 Modified Files: win32gui.i Log Message: autoduck corrections. Index: win32gui.i =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32gui.i,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** win32gui.i 10 Jan 2006 03:43:21 -0000 1.74 --- win32gui.i 10 Jan 2006 05:37:50 -0000 1.75 *************** *** 3322,3326 **** // @pyswig |CreateSolidBrush| HBRUSH CreateSolidBrush(COLORREF color); ! // @pyswid |CreatePen| HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor); // @pyswig |GetSysColor| --- 3322,3326 ---- // @pyswig |CreateSolidBrush| HBRUSH CreateSolidBrush(COLORREF color); ! // @pyswig |CreatePen| HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor); // @pyswig |GetSysColor| |