{ "info": { "author": "Jondy Zhao", "author_email": "jondy.zhao@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "=================\n IMessageFilter\n=================\n\nA python package implements interface IMessageFilter for COM.\n\nThe main purpose is to fix 'Application is Busy' and 'Call was Rejected By Callee' errors in a WINDOWS COM/COM+ client.\n\nHere is a workaround\n\nhttps://docs.microsoft.com/en-us/previous-versions/ms228772(v=vs.140)\n\nBut it's written by C#, this package offers both C and Python versions.\n\nUsage\n-----\n\nInstall it::\n\n pip install imessagefilter\n\nImport `CMessageFilter` from `imessagefilter`\n\nCall static method `register` at the beginning of automation\n\nCall static method `revoke` at the end of work\n\nHere it's an example:\n\n.. code:: python\n\n from comtypes.client import CreateObject\n from imessagefilter import CMessageFilter\n\n def iter_excel_sheets(filename):\n CMessageFilter.register()\n aobj = CreateObject('Excel.Application', dynamic=True)\n aobj.Workbooks.Open(filename)\n for sheet in aobj.ActiveWorkbook.Worksheets:\n print('Processing %s' % sheet.Name)\n CMessageFilter.revoke()\n\n\n.. note::\n\n The interface `IMessageFilter` only works in single-threaded\n apartments, it will not be called in the multithreaded\n apartments.\n\n Refer to\n https://docs.microsoft.com/en-us/windows/desktop/com/choosing-the-threading-model\n\nBuild `msgfilter.dll`\n---------------------\n\nBy visual studio command line::\n\n cl /LD msgfilter.c ole32.lib\n\nBy mingw32 in cygwin::\n\n i686-pc-mingw32-gcc -shared -o msgfilter.dll msgfilter.c -lole32 -luuid\n\nThere are 2 export functions, they can be used in any c file.\n\nHere it's an exmaple:\n\n.. code:: c\n\n #include \n #include \n\n extern void register_message_filter();\n extern void revoke_message_filter();\n\n int main(int argc, char* argv[])\n {\n HRESULT ret;\n ret = CoInitializeEx(0, COINIT_APARTMENTTHREADED);\n register_message_filter();\n\n // do something for automation\n\n revoke_message_filter();\n CoUninitialize();\n\n return 0;\n }\n\nChange Logs\n-----------\n\n0.2.1\n~~~~~\n* Search msgfilter.dll in the current path first\n\n0.1.3\n~~~~~\n* Fix no long description in package information\n\n0.1.2\n~~~~~\n* Fix typos", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jondy/imessagefilter", "keywords": "COM IMessageFilter", "license": "", "maintainer": "", "maintainer_email": "", "name": "imessagefilter", "package_url": "https://pypi.org/project/imessagefilter/", "platform": "Windows", "project_url": "https://pypi.org/project/imessagefilter/", "project_urls": { "Homepage": "https://github.com/jondy/imessagefilter" }, "release_url": "https://pypi.org/project/imessagefilter/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "A python package implements interface IMessageFilter for COM", "version": "0.2.1" }, "last_serial": 4982023, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "0b449e20338f41245852a29dc6a0fa73", "sha256": "0f464bc2c9e84d909cf92a88d6c0dd3ea6eb6d676d89036fb60501712700000a" }, "downloads": -1, "filename": "imessagefilter-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b449e20338f41245852a29dc6a0fa73", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25675, "upload_time": "2019-03-17T04:05:11", "url": "https://files.pythonhosted.org/packages/90/46/366c248d94b7a51a2052358af85ba45c0d2e962f77589b9a2b4e95cd4e4b/imessagefilter-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64d9217becf6aa8dad63999cfba6a777", "sha256": "1fa16463240ce516076e5926c4e8e08cc977095e6294e146640612ac6f25834d" }, "downloads": -1, "filename": "imessagefilter-0.1.1.zip", "has_sig": false, "md5_digest": "64d9217becf6aa8dad63999cfba6a777", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27493, "upload_time": "2019-03-17T04:05:03", "url": "https://files.pythonhosted.org/packages/fc/54/cafe6cb5d9a99654e8c59f836180ab81d531b9ff893ac5334527c375805e/imessagefilter-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "158d7db506eeb6765d8557ae24fde89b", "sha256": "e145edece347d44445e53c56803a6056cb6d6c7d7118d7e2490916722f29e669" }, "downloads": -1, "filename": "imessagefilter-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "158d7db506eeb6765d8557ae24fde89b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27473, "upload_time": "2019-03-17T04:35:45", "url": "https://files.pythonhosted.org/packages/4b/40/4a1cc22a84c5027bd0156fdbb24b842ec78f96364956e8f78baab4135d02/imessagefilter-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5acbe6a6237b6e52040a99f957828dcd", "sha256": "84d2b7dfe3ef6ea358d8e8c24a52fb507b30a318eeb0ae0aff4dcf38a90b4cb4" }, "downloads": -1, "filename": "imessagefilter-0.1.2.zip", "has_sig": false, "md5_digest": "5acbe6a6237b6e52040a99f957828dcd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29242, "upload_time": "2019-03-17T04:35:31", "url": "https://files.pythonhosted.org/packages/eb/58/0a8f343ab2689bf8b279d47b46eb132b108f8c659157776cb2ed418f3a95/imessagefilter-0.1.2.zip" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "43dffeeadc9af0f5126d29b6f1e6f14d", "sha256": "8bc2279c6aabf522691e4d3a0c9dc536fd8bc160822c1c12cdabf22a654a5644" }, "downloads": -1, "filename": "imessagefilter-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43dffeeadc9af0f5126d29b6f1e6f14d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26210, "upload_time": "2019-03-17T04:42:12", "url": "https://files.pythonhosted.org/packages/92/66/7e30d34363bb2d922c7038a862295ca249f646c0b3192b957e5e8fca501f/imessagefilter-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2fe17bd29bea4d1366d0825ec98b30ea", "sha256": "9275591fa5270fd98129d0f5344a31ea8f45bded4e14f76d3af45ca6a2a0bcdb" }, "downloads": -1, "filename": "imessagefilter-0.1.3.zip", "has_sig": false, "md5_digest": "2fe17bd29bea4d1366d0825ec98b30ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28094, "upload_time": "2019-03-17T04:42:07", "url": "https://files.pythonhosted.org/packages/44/77/c42a7f70d832153dec28c7807ec709445f8775424098534e0bd49a5bc09b/imessagefilter-0.1.3.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ce2195336c47a0744f592b3fc0135bba", "sha256": "e4b3f51de48f3d08fab4f2e6cfcd21fdaea294abbc2b171084d1c5965961f52d" }, "downloads": -1, "filename": "imessagefilter-0.2.1.zip", "has_sig": false, "md5_digest": "ce2195336c47a0744f592b3fc0135bba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28195, "upload_time": "2019-03-25T11:33:45", "url": "https://files.pythonhosted.org/packages/14/e6/849ff1835ecd5d8f49e16060acdd013cdb898c2e6b14e4201c146fc4eff0/imessagefilter-0.2.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ce2195336c47a0744f592b3fc0135bba", "sha256": "e4b3f51de48f3d08fab4f2e6cfcd21fdaea294abbc2b171084d1c5965961f52d" }, "downloads": -1, "filename": "imessagefilter-0.2.1.zip", "has_sig": false, "md5_digest": "ce2195336c47a0744f592b3fc0135bba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28195, "upload_time": "2019-03-25T11:33:45", "url": "https://files.pythonhosted.org/packages/14/e6/849ff1835ecd5d8f49e16060acdd013cdb898c2e6b14e4201c146fc4eff0/imessagefilter-0.2.1.zip" } ] }