起步软件技术论坛-X3

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: 拓思科技

我想记录用户登陆,退出的时间**

[复制链接]
 楼主| 发表于 2006-12-28 13:24:14 | 显示全部楼层
求版主在您那边试做一下,到底是不是我代码有问题?
我即使删掉我写的那段代码,用Studio调试运行,他都不会执行代码,难道我设的断点地方不对吗?
回复 支持 反对

使用道具 举报

发表于 2006-12-28 14:26:41 | 显示全部楼层
在调试环境下,第一次是不需要登陆的,自动会用你在选项|调试中设置的人员登陆
你可以用注销看看,或者在从初始化运行之前,取消 选项|调试 中设置的登陆ID
回复 支持 反对

使用道具 举报

发表于 2006-12-28 14:28:31 | 显示全部楼层
如果通过AD域登陆也需要记录的话,在static function TINIT.InternalLogon: Boolean;函数中
    if UseAD and LoginUseAD then
    begin
      Dialogs.ShowMessage('通过AD登陆');
      Result := True;
      Exit;
    end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-28 16:08:39 | 显示全部楼层
版主,照你的方法做了,但是没有触发.
另外我们在登陆按扭那里写了代码,是可以插入到日志表的,
只是退出,运行功能 结束功能那要实现,恐怕用现在的方法不行。
这个贴子就这样吧,等再遇到具体问题,再新发贴问吧,
麻烦您们啦 版主
谢谢
回复 支持 反对

使用道具 举报

发表于 2006-12-29 08:53:01 | 显示全部楼层
不会啊,楼主,我这里都是可以的
static function TINIT.InternalLogon: Boolean;
const
  MaxLogonFailCount = 3;
  LogonErrorMsg01 = '登录失败';
  LogonErrorMsg02 = '用户不存在或者密码错误,请注意大小写,密码是区分大小写的。';
  LogonErrorMsg03 = '对不起,您已经 %d 次登录失败,将退出系统。';
var
  I: Integer;
  lAccept: Boolean;
  sUser, sPass, lAccountID, lUserID: String;
  lIniFile: TIniFile;
  lIniFileName: String;
begin
  if not FInternalDisableAutoLogon then
  begin
    if UseAD and LoginUseAD then
    begin
      Dialogs.ShowMessage('通过AD登陆');
      Result := True;
      Exit;
    end;
  end;

  lIniFileName := jsCommon.ModulePath + 'Business.ini';

  lIniFile := TIniFile.Create(lIniFileName);
  try
    sUser := lIniFile.ReadString('System', 'LastLogonUserID', '');
    sPass := '';
    I := MaxLogonFailCount;
    repeat
      if I <> MaxLogonFailCount then
        Dialogs.MessageDlg(LogonErrorMsg02, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK] , 0);
      lAccept := TSystemCore.SystemInterface.ShowLogonForm(sUser, sPass);
      if not lAccept then Break;

      // IE嵌入登陆 sUser的返回可以为空(这个方案不好,为了做嵌入IE登陆)
      if sUser <>  '' then
      begin
        lAccountID := sUser;
        lUserID := JSCommon.SplitStr('@', lAccountID);
        BizSys.BizSystem.ClientAccount := lAccountID;

        Result := (not Opr.IsSystemManager(lUserID) or ExtUtils.ClientAccountExist(BizSys.BizSystem.ClientAccount)) and
          TSystemCore.Logon(lUserID, sPass);
      end
      else
        Result := True;

      if Result then Break;
      Dec(I);
    until I = 0;
    if Result then
      try
        lIniFile.WriteString('System', 'LastLogonUserID', sUser);
        Dialogs.Showmessage('用户名登陆成功!');
      except

      end
    else
      if lAccept then
        Dialogs.MessageDlg(SysUtils.Format(LogonErrorMsg03, [MaxLogonFailCount]),
          TMsgDlgType.mtError, [TMsgDlgBtn.mbOK] , 0);
  finally
    lIniFile.Free;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-1-10 09:46:05 | 显示全部楼层
楼主,问题搞定没有?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-13 21:07 , Processed in 0.050697 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表