如何实现多个程序一次登录(single sign-on)? 有什么难的吗?可以在应用程序启动的时候加参数啊?比如你的所有程序都需要TEST.EXT -USER -PASSWORD 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 outer2000(天外流星) 你又在胡说,或者说胡话。-USER -PASSWORD 的话 我还用登录吗? 用Mutex参见CreateMutex每个程序定一同一个名字的Mutex,所有程序的启动步骤如下:1.每个程序启动前创建这个Mutex,如果发现已经存在,说明已经有其他的程序登录,转52.销毁这个Mutex; // 销毁他是为了方式登陆的过程中其他程序启动3.登录检查;验证不通过,转64.创建这个Mutex;5.你的正常程序;6.退出; 我又想了想,有个问题,就是这个Mutex的持有者,就是第一个启动的程序,他又控制权,如果他退出了,就是放掉这个mutex了,这时候即使你仍有其他程序运行,在启动新的程序也检查不到这个Mutex了。不知道你能明白不?由此我想到了另一个东西,“原子”ATOM这个东西一般可以用作计数具体参见 MSDN 的 GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom所有程序定义一个唯一的原子字符串,比如"1234"程序流程如下:1.GlobalFindAtom("1234");找到,说明有其他程序运行了,装42.登录检查,通不过,转63.GlobalAddAtom("1234");4.你正常的程序;5.退出前执行 GlobalDeleteAtom("1234");6.退出这个原子的作用就是,你每次AddAtom,他都会在全局的原子计数器里面增加1,deleteAtom作用相反减一,直到计数器为0才真正删除这个Atom。这样,只要你有任何一个程序在运行,这个原子都不会变成0,你新运行的就不需要登录了。原子的技术可以用在限制应用程序同时运行的副本数,比如曾经有个类似icq的工具就只能同时运行7个。类似的技术还有很多,比如IPC,消息了等等,这个原子是我想到的最简单的了。 首先楼主的意思是几个APP共用一个登录WINDOW,那么就以其为主程序,采用winexec在登录窗口中若帐号正确,则就启动APP,对于关闭程序的问题,既可以单独关闭,也可以全部关闭,即若登录窗口的APP关闭,则Findwindows(others),若真,则关闭.关于登录的问题,若不用数据库(注册表也是数据库),存储文件以外的方式,楼主,若想到了好方法,一定告诉我一下,学习!! 你是想有一个登录程序,它运行后其他程序可以共享当前登录用户的信息而且它会在任务栏加一个图标。当APP启动时如果发现没有登录则启动该登录程序。 你可以这样做: 1、写一个登录管理程序,他会为其他程序提供用户登录信息。该程序可以是COM,Service或者别的什么的,只要能够提供服务就行。 2、登录界面采用DLL实现,供各个APP调用。 3、任务栏图标监视,当登录完成后启动一个APP(TrayIcon),它可以退出登录、查看登录用户信息。其实他和其他APP一样使用登录服务程序。 4、当然如果你不想使用COM、Service等,可以在任务栏图标监视程序中来提供同样的服务,然后使用进程间通讯得到登录用户信息。 你的这个要求可能利用IPC好些。你看看这篇文章,希望给你启发http://www.powerba.com/develop/delphi/article/20000911035.htm : tonyyang(Tony) 你是真正的高手 佩服 佩服谢谢你指点迷津请回答我后续的问题http://www.csdn.net/Expert/TopicView1.asp?id=1018130同时解贴了 哪位大哥给个代码.... 存储数据的问题,急! 武汉招Delphi程序员 请高手门来谈谈自己对下面几个概念的理解,小弟实在理不清楚! 日期查询??? 如何制作一个简单的局域网上网收费软件??--------新手 急,在Excel中如何将指定单元格数据居中? 怎样在edit中显示数据表中的信息 各位!怎样得到SQL SERVER数据库表的所有字段的类型和长度呀!请帮帮忙!!! 分不够可以另送的!! 怎样在label的标题中输入平方毫米的英文字母? 一个窗口显示的问题 ★★重要★★ 大家都到这个新闻组看看,人气很旺的!
你又在胡说,或者说胡话。-USER -PASSWORD 的话 我还用登录吗?
参见CreateMutex每个程序定一同一个名字的Mutex,
所有程序的启动步骤如下:
1.每个程序启动前创建这个Mutex,如果发现已经存在,说明已经有其他的程序登录,转5
2.销毁这个Mutex; // 销毁他是为了方式登陆的过程中其他程序启动
3.登录检查;验证不通过,转6
4.创建这个Mutex;
5.你的正常程序;
6.退出;
不知道你能明白不?由此我想到了另一个东西,“原子”ATOM
这个东西一般可以用作计数
具体参见 MSDN 的 GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom
所有程序定义一个唯一的原子字符串,比如"1234"
程序流程如下:
1.GlobalFindAtom("1234");找到,说明有其他程序运行了,装4
2.登录检查,通不过,转6
3.GlobalAddAtom("1234");
4.你正常的程序;
5.退出前执行 GlobalDeleteAtom("1234");
6.退出这个原子的作用就是,你每次AddAtom,他都会在全局的原子计数器里面增加1,deleteAtom作用相反减一,直到计数器为0才真正删除这个Atom。
这样,只要你有任何一个程序在运行,这个原子都不会变成0,你新运行的就不需要登录了。原子的技术可以用在限制应用程序同时运行的副本数,比如曾经有个类似icq的工具就只能同时运行7个。
类似的技术还有很多,比如IPC,消息了等等,这个原子是我想到的最简单的了。
winexec在登录窗口中若帐号正确,则就启动APP,对于关闭程序的问题,既可以单独关闭,也可以全部关闭,即若登录窗口的APP关闭,则Findwindows(others),若真,则关闭.关于登录的问题,若不用数据库(注册表也是数据库),存储文件以外的方式,楼主,若想到了好方法,一定告诉我一下,学习!!
你可以这样做:
1、写一个登录管理程序,他会为其他程序提供用户登录信息。该程序可以是COM,Service或者别的什么的,只要能够提供服务就行。
2、登录界面采用DLL实现,供各个APP调用。
3、任务栏图标监视,当登录完成后启动一个APP(TrayIcon),它可以退出登录、查看登录用户信息。其实他和其他APP一样使用登录服务程序。
4、当然如果你不想使用COM、Service等,可以在任务栏图标监视程序中来提供同样的服务,然后使用进程间通讯得到登录用户信息。
你看看这篇文章,希望给你启发
http://www.powerba.com/develop/delphi/article/20000911035.htm
: tonyyang(Tony) 你是真正的高手 佩服 佩服
谢谢你指点迷津请回答我后续的问题http://www.csdn.net/Expert/TopicView1.asp?id=1018130
同时解贴了