CnPack Forum


 
Subject: 很奇怪ActiveX控件调用事件问题,来电弹屏问题
jxydhzw
普通灌水员
Rank: 2



UID 3904
Digest Posts 1
Credits 64
Posts 19
点点分 64
Reading Access 10
Registered 2006-12-26
Status Offline
Post at 2009-3-23 17:15  Profile | Blog | P.M. 
很奇怪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控件的来电弹屏事件中,调用。最主要是会造成程序假死,没反应,只要结束进程才能正常退出。
我不知道如何解决,现发贴请如果遇到过此类问题的朋友指点一下。如果没遇到的也没关系。注意一下。以后才知道如何避免。。
Top
Rainstorey
普通灌水员
Rank: 2
菜鸟


UID 977
Digest Posts 0
Credits 82
Posts 39
点点分 82
Reading Access 10
Registered 2005-8-8
Location 苏州
Status Offline
Post at 2009-3-24 10:18  Profile | Blog | P.M. 
个人认为可能是线程模型的问题.你可以尝试一下在ActiveX event中用PostMessage给Delphi的Form发送个自定义消息,然后在此消息中处理getclient.

[ 本帖最后由 Rainstorey 于 2009-3-24 12:07 编辑 ]




Top
jxydhzw
普通灌水员
Rank: 2



UID 3904
Digest Posts 1
Credits 64
Posts 19
点点分 64
Reading Access 10
Registered 2006-12-26
Status Offline
Post at 2009-4-1 16:50  Profile | Blog | P.M. 
对的。楼上兄弟这方法好使。感谢
Top
 




All times are GMT++8, the time now is 2024-11-22 02:06

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.016856 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP