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 details)

Uploaded Source

File details

Details for the file imessagefilter-0.2.1.zip.

File metadata

  • Download URL: imessagefilter-0.2.1.zip
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.8.1 setuptools/2.1 requests-toolbelt/0.8.0 tqdm/4.15.0 CPython/3.4.2

File hashes

Hashes for imessagefilter-0.2.1.zip
Algorithm Hash digest
SHA256 e4b3f51de48f3d08fab4f2e6cfcd21fdaea294abbc2b171084d1c5965961f52d
MD5 ce2195336c47a0744f592b3fc0135bba
BLAKE2b-256 14e6849ff1835ecd5d8f49e16060acdd013cdb898c2e6b14e4201c146fc4eff0

See more details on using hashes here.

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