Subject:
很奇怪ActiveX控件调用事件问题,来电弹屏问题
[Print This Page]
Author:
jxydhzw
Time:
2009-3-23 17:15
Subject:
很奇怪ActiveX控件调用事件问题,来电弹屏问题
不知道有朋友接触过此类事情
很奇怪ActiveX控件调用事件问题,来电弹屏问题
关于来电弹屏的。delphi开发环境 控件有Dev系列的,
首先介绍功能:
有一个ActiveX控件,里面封装了一个来电弹屏事件,即有电话呼入时,触发此事件,,该事件有二个参数,分别为CTI传入的主叫号码,与被叫号码
有一个方法getclient,数据库相关控件为ODAC的
查找客户,根据传入的电话号码查找客户,如果没有找到,则不进行任何操作,找到客户,如果有一个客户。就直接显示匹配的客户信息,如果有多个相似的客户。就将相似的客户显示在一个表格界面中,该表格界面是ShowModal模式,弹出该界面供客户选择。选择完之后,显示选择的客户信息。
现测试,如果在一个按纽当中。单独调用getclient,无论是找着多个客户,或者没找着客户。都没有问题。最主要是程序的主界面没有死掉。。
如果在ActiveX控件中的来电弹屏事件中,调用getclient方法,找着到多个客户时,发现问题如下:
1。显示的表格界面时,ShowModal模式无效,随便点击一个就不见了。
2。如果选择了某个客户资料,正常显示其资料后,此时,程序死掉了。鼠标点击没有反应。并且就显示没响应。我注意了一下CPU使用率。很正常才2%,这个问题比较重要。
3。有时。会出现“priviledged instruction”错误
4。我在调试状态下。发现运行一切正常。就是返回不到运行的界面。感觉好像失去了程序句柄一样。
我反复测试好几次,问题主要集中在ActiveX控件,因为此控件不是我方开发。是第三方的,电信提供的,好像是C++开发的,如果是我方getclient代码有问题,则在按纽事件中调用getclient测试,并无任何异常发生。尤其是不会造成程序假死,没有任何反应。而在ActiveX控件的来电弹屏事件中,调用。最主要是会造成程序假死,没反应,只要结束进程才能正常退出。
我不知道如何解决,现发贴请如果遇到过此类问题的朋友指点一下。如果没遇到的也没关系。注意一下。以后才知道如何避免。。
Author:
Rainstorey
Time:
2009-3-24 10:18
个人认为可能是线程模型的问题.你可以尝试一下在ActiveX event中用PostMessage给Delphi的Form发送个自定义消息,然后在此消息中处理getclient.
[
本帖最后由 Rainstorey 于 2009-3-24 12:07 编辑
]
Author:
jxydhzw
Time:
2009-4-1 16:50
对的。楼上兄弟这方法好使。感谢
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0