⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 passaction.pas

📁 用delphi写的密码管理工具.
💻 PAS
字号:
unit PassAction;

interface

uses Classes, Dialogs, SysUtils, Clipbrd, Forms, Controls, Windows;

type
  TActionType = (atCopy, atSend, atSendToWindow);

  TPassAction = class
  private
    FName: string;
    FActionType: TActionType;
    FKeyString: string;
    FHotKey: TShortCut;
    function KeyString4Copy(UserName, Password, GroupName: string): string;
    function KeyString4Send(UserName, Password, GroupName: string): string;
  public
    property Name: string read FName;
    property HotKey: TShortCut read FHotKey;
    constructor Create(Name: string; ActionType: TActionType; KeyString: string; HotKey: TShortCut);
    procedure DoAction(UserName, Password, GroupName: string);
  end;

implementation

uses Log, Main, SNDKEY32, SelectWin;

constructor TPassAction.Create(Name: string; ActionType: TActionType; KeyString: string; HotKey: TShortCut);
begin
  FName := Name;
  FActionType := ActionType;
  FKeyString := KeyString;
  FHotKey := HotKey;
end;

function TPassAction.KeyString4Copy(UserName, Password, GroupName: string): string;
begin
  Result := StringReplace(FKeyString, '{USERNAME}', UserName, [rfReplaceAll, rfIgnoreCase]);
  Result := StringReplace(Result, '{PASSWORD}', Password, [rfReplaceAll, rfIgnoreCase]);
  Result := StringReplace(Result, '{GROUPNAME}', GroupName, [rfReplaceAll, rfIgnoreCase]);
end;

function TPassAction.KeyString4Send(UserName, Password, GroupName: string): string;

  function ReplaceSpecialCharacters(S: string): string;
  begin
    S := StringReplace(S, '~', '{~}', [rfReplaceAll]);
    S := StringReplace(S, '+', '{+}', [rfReplaceAll]);
    S := StringReplace(S, '^', '{^}', [rfReplaceAll]);
    S := StringReplace(S, '%', '{%}', [rfReplaceAll]);
    Result := S;
  end;

begin
  UserName := ReplaceSpecialCharacters(UserName);
  Password := ReplaceSpecialCharacters(Password);
  GroupName := ReplaceSpecialCharacters(GroupName);
  Result := StringReplace(FKeyString, '{USERNAME}', UserName, [rfReplaceAll, rfIgnoreCase]);
  Result := StringReplace(Result, '{PASSWORD}', Password, [rfReplaceAll, rfIgnoreCase]);
  Result := StringReplace(Result, '{GROUPNAME}', GroupName, [rfReplaceAll, rfIgnoreCase]);
end;

procedure TPassAction.DoAction(UserName, Password, GroupName: string);
begin
  if FActionType = atCopy then
    Clipboard.SetTextBuf(PChar(KeyString4Copy(UserName, Password, GroupName)))
  else if FActionType = atSend then
  begin
    frmMain.GetWindows;
    if frmMain.slWinHandle.Count > 0 then
    begin
      SetForegroundWindow(StrToInt(frmMain.slWinHandle[0]));
      SendKeys(PChar(KeyString4Send(UserName, Password, GroupName)), True);
    end;
  end
  else if FActionType = atSendToWindow then
    with frmSelectWin do
    begin
      lstWin.Items.Assign(frmMain.slWinTitle);
      if frmSelectWin.ShowModal = mrOK then
      begin
        SetForegroundWindow(StrToInt(frmMain.slWinHandle[lstWin.ItemIndex]));
        SendKeys(PChar(KeyString4Send(UserName, Password, GroupName)), True);
      end;
    end;


  fraLog.WriteLog;
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -