如何避免ActiveForm的二次运行?(100分)

  • 主题发起人 主题发起人 ryg
  • 开始时间 开始时间
R

ryg

Unregistered / Unconfirmed
GUEST, unregistred user!
ActiveForm发布后,通过浏览器来运行,可以同时打开几个窗口,都显示
包含该ActiveForm的页面。如何避免这种情况?
 
每人遇到这种需要吗?
 
错了,是没人遇到过这种需要吗?
 
没人.
你为什么需要呢?说来听听...
 
我写了一个瘦客户机的数据库查询程序,将客户端做成了ActiveForm,
如果打开了两个ActiveForm(Ctrl+N),就会出现Socketconnection错误。
 
那还是你的程序有问题,你应该从你的程序上面找原因.
 
我也试过这样的程序,没有你所说的问题呀!
 
服务器方更新了acitivexform,客户方能不能更新?
 
不能自动更新,你要在客户机上删掉他的ocx文件才行。
 
遗憾的是,很多情况下,删除都没用,甚至unregister->delete都没用.
我曾经作过一次,把我搞怕了,以后再也不敢想activform了.
 
是在Ctrl+N打开新的IE窗口下出现的错误。如果重新启动一个IE,装入这个界面,
执行查询就不会出错。我想可能是因为Ctrl+N打开的IE和原来的IE并不是独立的,
所以ActiveForm里的MainForm.Creat(self)建立了两次,却没有分配到独立的
内存空间,所以出错。
另外,我做的OCX也不会自动注册。cAkk,如果在NT下,也许情况就会好些。
 
FindWindow是无效的。
采用系统API创建互斥量可以用来防止启动两份。
在控件的初始化代码中检测是否有互斥量存在,
如果存在就显示一个告诉用户使用第一个实例的信息,否则正常执行。
 
我想这是所谓B/S模式的特点吧。你可以在服务器的库里面加一些标志,
每个ocx程序的set ip地址事件中加一些判断。
客户机上删掉ocx文件,是在c:/windows/downloaded program files
 
应用ActiveForm版本管理,更新版本后,他会自动下载更新ActiveForm
 
怎样"应用ActiveForm版本管理"?
 
Project ->Option->Version info
 
时间太久,强制结束。 wjiachun
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部