发博文
lxl-nyist (大漠孤烟)

http://blog.chinaunix.net/space.php?uid=7445427

   
个人资料
  • 博客访问:98723
  • 博文数量:46
  • 博客积分:2050
  • 博客等级:大尉
  • 注册时间:2005-03-08 13:42:37
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
分类: Delphi

给用户开发一卡通接口 在页面中使用 activex ,activex 再通过indy httpclient 访问. 服务器,在部分机器上出现
dzx error
access violation at address 069c352a in module 'ykt.ocx'. Read of address 000000000.
   
后想使用applet 来解决,但好象是ie 安全性的限制问题.
把jar 签名后.在applet 内部可以用HttpURLConnection 可以得到http://127.0.0.1/cardreader 结果,但用javascript 却无法调用,同样出现
 
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8181 connect,resolve)
 at java.security.AccessControlContext.checkPermission(Unknown Source)
 at java.security.AccessController.checkPermission(Unknown Source)
 at java.lang.SecurityManager.checkPermission(Unknown Source)
 at java.lang.SecurityManager.checkConnect(Unknown Source)
想使用ajax 代理的方式,但由于部分客户端ie 可能使用代理服务器. 也不可行.
想使用vc 6 再做一个activex 但.由于C++ 不熟.放弃.
想.net 做, 也不熟, 特别是字符串处理函数要用很多.时间不够.
(好象inet 控件,或是xmlhttp 控制)好象都不太好使 (水平太差.).
 
最后只能回到老路上了.
找到如下解决办法
  1、如果你是用d5   /   d6开发的话,请参见http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18656  
   
  axctrls.pas  
   
  function   ParkingWindow:   HWND;  
  var  
      TempClass:   TWndClass;  
      ParkingName   :   String;  
  begin  
      Result   :=   xParkingWindow;  
      if   Result   <>   0   then   Exit;  
   
      //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
      ParkingName   :=   'DAXParkingWindow_'   +       Format('%p',   [@ParkingWindowProc]);  
   
      FillChar(TempClass,   sizeof(TempClass),   0);  
      if   not   GetClassInfo(HInstance,   PChar(ParkingName),   TempClass)   then   //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
      begin  
          TempClass.hInstance   :=   HInstance;  
          TempClass.lpfnWndProc   :=   @ParkingWindowProc;  
          TempClass.lpszClassName   :=   PChar(ParkingName);   //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
          if   Windows.RegisterClass(TempClass)   =   0   then  
              raise   EOutOfResources.Create(SWindowClass);  
      end;  
      xParkingWindow   :=   CreateWindowEx(WS_EX_TOOLWINDOW,   TempClass.lpszClassName,   nil,  
          WS_POPUP,   GetSystemMetrics(SM_CXSCREEN)   div   2,  
          GetSystemMetrics(SM_CYSCREEN)   div   2,   0,   0,   0,   0,   HInstance,   nil);  
      SetWindowPos(xParkingWindow,   0,   0,   0,   0,   0,   SWP_NOACTIVATE   or   SWP_NOREDRAW  
          or   SWP_NOZORDER   or   SWP_SHOWWINDOW);  
      Result   :=   xParkingWindow;  
  end;  
  即修改axctrls.pas   文件,并重新编译  
  2、在D7这样是不能解决问题的,而且Activeform也没有OnClose事件!但这样的问题一般都是出现在装了第三方IE   Addin的机器上,只要你将   IE的   工具->选项->高级->浏览   里的"启用第三方扩展"勾   uncheck就可以了。   
 

我的更多文章
[发评论] 评论 重要提示:警惕虚假中奖信息!
  • chinaunix网友 2007-04-03 13:22
    你好,我现在也是碰到类似access violation at address 069c352a in module 'ykt.ocx'. Read of address 000000000的问题,但不同的是我再一个网页里面的两个链接对应两个控件调用,第一次打开的无论是哪个,都可以打开,但第二个链接就出现上述错误,我是用delphi7做的,请问这是什么原因,怎么解决,非常感谢!
  • chinaunix网友 2006-12-01 11:24
    金格科技的产品(http://www.goldgrid.com)原来也这个问题,现在已经解决了,是delphi的问题
亲,您还没有登录,请[登录][注册]后再进行评论