带有事件的 Python TAPI COM 对象

标签 python tapi

我尝试对 TAPI COM 对象使用 win32com.client.DispatchWithEvents

import win32com.client
class TapiEvents:
    pass

tapi = win32com.client.DispatchWithEvents("{21D6D48E-A88B-11D0-83DD-00AA003CCABD}",TapiEvents)

但它给出了一个错误: 此 COM 对象不支持事件。

最佳答案

工作示例如下所示(使用 CiscoTSP)

import win32com.client
cls="TAPI.TAPI.1"
# need for gen_py
ti = win32com.client.Dispatch(cls)._oleobj_.GetTypeInfo()
tlb, index = ti.GetContainingTypeLib()
tla = tlb.GetLibAttr()
win32com.client.gencache.EnsureModule(tla[0], tla[1], tla[3], tla[4], bValidateFile=0)

class TapiEvents(win32com.client.getevents(cls)):
    def OnEvent(self, ev1,ev2): 
        print "OnEvent"

tapi=win32com.client.Dispatch(cls)
tapi.Initialize() # must run after Dispatch and before TapiEvents
events=TapiEvents(tapi)
tapi.EventFilter = 0x1FFFF

for addr in tapi.Addresses: 
    try:
        tapi.RegisterCallNotifications(addr,True,True,8,0)
    except:
        pass

import Tix
r=Tix.Tk()
r.mainloop()

用于调用电话

import win32com.client,time
tapi = win32com.client.Dispatch("TAPI.TAPI.1")
tapi.Initialize()
for item in tapi.Addresses: print item.AddressName
objCrtAddress = [item for item in tapi.Addresses if 'SEP' in item.AddressName][0]
sNumber='323'
gobjCall = objCrtAddress.CreateCall(sNumber, 1, 0x8)
gobjCall.Connect (False)

关于带有事件的 Python TAPI COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426759/

相关文章:

python - celery store 在什么时候产生结果?

python - 使用另一个字典列表中的值对字典列表进行排序

delphi - 虚拟TAPI设备

c - C 函数回调如何工作?

c# - TAPI 版本控制

c++ - 与 *nix 的电话系统接口(interface)

javascript - Django - 使用 Ajax 重新加载数据表

python - 当值为 `pandas.Series.str` 时 `list` 如何工作?

python - 大小为 2GB 的数组在减法和除法运算时会引发内存错误

c# - 与 Cisco 电话的 TAPI;使用 "sidecar"800 模块