当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我基本上没做什么配置,几乎都是默认的。 用delphi编译生成的可执行文件,在其他机器上一运行, 就提示----tns:无法处理服务名。 ......
    摘要: 同标题 ......


登录窗口问题

一个项目中有多个EXE文件,其中一个是登录窗口,其余的几个在启动的时候都要先检查是否已经登录成功,以好给指定权限。  
          现在的问题是怎么才能使之有效,即当我运行其他任何一个EXE文件时,如果这些EXE文件中没有其他打开的情况下,自动调用登录窗口.exe,如果已经打开了其中一个EXE,即已经进入该系统,则不再调用登录窗口,而是根据用户名和权限值直接使用。  
          我的解决方法是,在注册表中记录本项目中所有的EXE文件,如果其中一个EXE打开,则在注册表中标记已经打开,当退出时再取消标记,每个窗口在退出时都再检查一下是否有其他EXE在运行,如果没有,则还要在注册表中取消登录时登记的用户名、权限、密码等值。如果打开的EXE不是本项目中第一个打开,则直接读取其用户名、密码、权限等值,不用再运行一次登录窗口。  
          但这种方法存在一定的问题,即当非法退出系统后,注册表中还是记录有值,而不会自动消失,下次也就不会再登录就可使用了。  
   
  各位大虾谁做过这个东东,谁还有更好的方案?区区100分不成敬意  
  我的妹儿:duxbin@sohu.com         duxbin@elong.com  
   
 

NO.1   作者: 2312

我是用的SOCKET进行控制的  
   
      try  
          ServerSocket2.Active:=true;  
          serversocket2.Open;  
          ServerSocket2.Socket.Lock;  
          ........//进行验证  
      except  
          begin  
              MessageBox(Application.handle,客户端程序已经运行!,提示,MB_OK   +   mb_iconerror+MB_ICONExclamation);  
              ........//直接使用  
          end;  
   
   
 

NO.2   作者: TonyWzz

有很多方法可以用公共存储区

NO.3   作者: Delphi_Li

使用Findwindow判断是否已经有你需要的程序在运行,然后按照你的需求进行处理!!!

NO.4   作者: FrameSniper

哦?一楼的朋友可以说说你的解决办法吗?

NO.5   作者: FrameSniper

首先不应该将标记程序是否打开放在注册表里面,很不安全!  
   
  另外我建议楼主在整个项目组中建立一个公共单元文件,其中设置多个标记,分别对应其他的多个Exe文件。然后在所有的Exe文件的MainForm的OnClose事件中对这些标记进行设置:退出则置为0,否则则置为1。  
   
  然后通过对所有标记进行或运算来判断是否当前有某个Exe文件处于打开状态!  
   
  另外,楼上那个朋友说使用Socket进行控制,我想听听这个朋友的意见!等....

NO.6   作者: lzniam

大概思路是,把注册表中的值与数据库全局临时变量,对应起来,然后根据情况对  
  临时变量修改,更新,  
  这样断电后或数据库重启,该临时变量消失

NO.7   作者: TonyWzz

也可以建一个检查句柄

NO.8   作者: kuangning

为什么不用消息?

NO.9   作者: vchoushen6

在内存中弄个公共的数据区,就不用担心掉电的问题了.


 ·好消息。。。。。。    »显示摘要«
    摘要: 本人欲转让visual studio .net 中文版(7cd),绝对好用,我已在winxp下安装过两遍。加邮寄费100元。通过email联系:p.r.china@2911.net ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE