Skip to main content

A python package implements interface IMessageFilter for COM

Project description

A python package implements interface IMessageFilter for COM.

The main purpose is to fix ‘Application is Busy’ and ‘Call was Rejected By Callee’ errors in a WINDOWS COM/COM+ client.

Here is a workaround

https://docs.microsoft.com/en-us/previous-versions/ms228772(v=vs.140)

But it’s written by C#, this package offers both C and Python versions.

Usage

Install it:

pip install imessagefilter

Import CMessageFilter from imessagefilter

Call static method register at the beginning of automation

Call static method revoke at the end of work

Here it’s an example:

from comtypes.client import CreateObject
from imessagefilter import CMessageFilter

def iter_excel_sheets(filename):
    CMessageFilter.register()
    aobj = CreateObject('Excel.Application', dynamic=True)
    aobj.Workbooks.Open(filename)
    for sheet in aobj.ActiveWorkbook.Worksheets:
        print('Processing %s' % sheet.Name)
    CMessageFilter.revoke()

Build msgfilter.dll

By visual studio command line:

cl /LD msgfilter.c ole32.lib

By mingw32 in cygwin:

i686-pc-mingw32-gcc -shared -o msgfilter.dll msgfilter.c -lole32 -luuid

There are 2 export functions, they can be used in any c file.

Here it’s an exmaple:

#include <stdio.h>
#include <objbase.h>

extern void register_message_filter();
extern void revoke_message_filter();

int main(int argc, char* argv[])
{
  HRESULT ret;
  ret = CoInitializeEx(0, COINIT_APARTMENTTHREADED);
  register_message_filter();

  // do something for automation

  revoke_message_filter();
  CoUninitialize();

  return 0;
}

Change Logs

0.2.1

  • Search msgfilter.dll in the current path first

0.1.3

  • Fix no long description in package information

0.1.2

  • Fix typos

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imessagefilter-0.2.1.zip (28.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page