📄 passaction.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 + -