一个项目中有多个EXE文件,其中一个是登录窗口,其余的几个在启动的时候都要先检查是否已经登录成功,以好给指定权限。
现在的问题是怎么才能使之有效,即当我运行其他任何一个EXE文件时,如果这些EXE文件中没有其他打开的情况下,自动调用登录窗口.exe,如果已经打开了其中一个EXE,即已经进入该系统,则不再调用登录窗口,而是根据用户名和权限值直接使用。
我的解决方法是,在注册表中记录本项目中所有的EXE文件,如果其中一个EXE打开,则在注册表中标记已经打开,当退出时再取消标记,每个窗口在退出时都再检查一下是否有其他EXE在运行,如果没有,则还要在注册表中取消登录时登记的用户名、权限、密码等值。如果打开的EXE不是本项目中第一个打开,则直接读取其用户名、密码、权限等值,不用再运行一次登录窗口。
但这种方法存在一定的问题,即当非法退出系统后(如突然断电等),注册表中还是记录有值,而不会自动消失,下次也就不会再登录就可使用了(但也只有一次)。各位大虾谁做过这个东东,谁还有更好的方案?区区100分不成敬意
我的妹儿:[email protected] [email protected]
现在的问题是怎么才能使之有效,即当我运行其他任何一个EXE文件时,如果这些EXE文件中没有其他打开的情况下,自动调用登录窗口.exe,如果已经打开了其中一个EXE,即已经进入该系统,则不再调用登录窗口,而是根据用户名和权限值直接使用。
我的解决方法是,在注册表中记录本项目中所有的EXE文件,如果其中一个EXE打开,则在注册表中标记已经打开,当退出时再取消标记,每个窗口在退出时都再检查一下是否有其他EXE在运行,如果没有,则还要在注册表中取消登录时登记的用户名、权限、密码等值。如果打开的EXE不是本项目中第一个打开,则直接读取其用户名、密码、权限等值,不用再运行一次登录窗口。
但这种方法存在一定的问题,即当非法退出系统后(如突然断电等),注册表中还是记录有值,而不会自动消失,下次也就不会再登录就可使用了(但也只有一次)。各位大虾谁做过这个东东,谁还有更好的方案?区区100分不成敬意
我的妹儿:[email protected] [email protected]
ServerSocket2.Active:=true;
serversocket2.Open;
ServerSocket2.Socket.Lock;
........//进行验证
except
begin
MessageBox(Application.handle,'客户端程序已经运行!','提示',MB_OK + mb_iconerror+MB_ICONExclamation);
........//直接使用
end;