python包实现接口imessagefilter for com

imessagefilter的Python项目详细描述


python包实现了接口imessagefilter for com。

主要目的是修复Windows COM/COM+客户端中的“应用程序正忙”和“呼叫被被叫方拒绝”错误。

以下是解决方法

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

但是它是由c编写的,这个包提供c和python两个版本。

用法

安装:

pip install imessagefilter

从imessagefilter导入cmessagefilter

在自动化开始时调用静态方法register

在工作结束时调用静态方法revoke

下面是一个示例:

fromcomtypes.clientimportCreateObjectfromimessagefilterimportCMessageFilterdefiter_excel_sheets(filename):CMessageFilter.register()aobj=CreateObject('Excel.Application',dynamic=True)aobj.Workbooks.Open(filename)forsheetinaobj.ActiveWorkbook.Worksheets:print('Processing %s'%sheet.Name)CMessageFilter.revoke()

注意

接口imessagefilter只在单线程中工作 公寓,它不会在多线程中调用 公寓。

参考 https://docs.microsoft.com/en-us/windows/desktop/com/choosing-the-threading-model

构建msgfilter.dll

通过Visual Studio命令行:

cl /LD msgfilter.c ole32.lib

在cygwin中通过mingw32:

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

有两个导出函数,它们可以在任何C文件中使用。

这是一棵枫树:

#include<stdio.h>
#include<objbase.h>externvoidregister_message_filter();externvoidrevoke_message_filter();intmain(intargc,char*argv[]){HRESULTret;ret=CoInitializeEx(0,COINIT_APARTMENTTHREADED);register_message_filter();// do something for automation
revoke_message_filter();CoUninitialize();return0;}

更改日志

0.2.1

  • 先在当前路径中搜索msgfilter.dll

0.1.3

  • 修复包信息中的长描述

0.1.2

  • 修复输入错误

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何获取所有链接并使用SeleniumWebDriver逐个单击这些链接   java中数组列表的arraylist移位元素   java如何存储具有不同类型参数的元素   java不能使用List<Future<?>>当从不同位置调用时,在方法参数中   java我应该如何修复代码以避免测试代码出错?   安卓 PreferenceFragment java。lang.RuntimeException   java在运行emulator时发现错误   java取消多个AsyncTask回调的有效方法是什么?如果中途满足条件,这些回调将在将来返回?   有没有办法在运行时将方法动态分配给Java类?   java如何将propertyfile与GlassFish一起使用   如何在PHP中使用bcrypt对密码进行哈希处理?   Java和UDP web服务器   java JPA允许EntityListeners执行JPA操作吗?   java执行do while语句时不会产生错误   java无法在edittext中显示数据库中的数据   java Tomcat中活动会话的数量   java在何处使用@SuppressWarnings(“requestfactory”)   netty连接中的java HornetQ异常