I've been playing around with comtypes for the last few days and ran into some trouble reading COM Properties. The COM in question is Microsoft.Hpc.Scheduler.Scheduler and this is the Python code executed:
>>> from comtypes.client import CreateObject >>> scheduler = CreateObject("Microsoft.Hpc.Scheduler.Scheduler") >>> scheduler.Connect("corecluster00") >>> job = scheduler.CreateJob() >>> task = job.CreateTask() >>> task.commandLine = r"mpiexec -n 4 ping -n 15 bjorns-ws" >>> job.AddTask(task) >>> scheduler.SubmitJob(job, None, None) Now we want to take a look at the job object and figure out the Job ID. >>> job <POINTER(ISchedulerJob) ptr=0x767ffd0 at 3496770> >>> job.id 124256112 >>> job.id 124256080 >>> job.id 124256048 Strange, an ever changing ID. Trying the _ISchedulerJob__com__get_id function: >>> import ctypes >>> i = ctypes.c_long() >>> job._ISchedulerJob__com__get_id(ctypes.byref(i)) >>> i c_long(124256016) >>> job._ISchedulerJob__com__get_id(ctypes.byref(i)) >>> i c_long(124255984) Basically the same result. But what happens if I use IDispatch'ers Invoke ? >>> job.Invoke(1610743834, _invkind=2) 184 Bingo, the correct job ID ! The same goes for other properties, such as job.State: >>> job.State -1164233603 >>> job.Invoke(1610743851, _invkind=2) 128 The dispatch ids are correct in the autogenerated Python classes (as per job.GetIDsOfNames output). I tried to chase down what was causing the error, but as I'm not familiar with comtypes internals I got a bit lost. I attempted to get from accessing job.id to IDispatch's Invoke() without luck. >>> from comtypes.gen._C45D10A1_54E8_420B_A052_719D47EC7C16_0_2_0 import >>> ISchedulerJob >>> ISchedulerJob.id >>> ISchedulerJob.id.fget <COM method offset 28: WinFunctionType at 0x03F964B8> Does job.id perhaps not use the Dispatch interface ? As there seems to be an issue with Microsoft.Hpc.Scheduler.dll (beta 2) causing my Python debugger to crash on breakpoints, tracing the steps from A to B therefore makes up for a fun manual labor step-through process ;) Perhaps you can identify the problem or point me in the right direction? I first tried this with 0.4.2 but am now playing with revision 64406. Thanks in advance, Bjorn Swift ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ comtypes-users mailing list comtypes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/comtypes-users