Другие языки программирования и технологии
delphi 7 создаём программу-прикол
суть программы : просьба нажать одновременно 10 клавиш на клавиатуре(любых), и выдать сообщение(типо отпустишь-запустится вирус). если отпустит хотябы одну, послать комп в перезагрузку. как организовать контролирующий момент удержания клавиш?
Тебе понадобиться сначала объявить переменные
var
Form1: TForm1;
i: integer; //счетчик клавиш
k: char; //запоминает нажатую клавишу
lovishka: boolean; //попался или нет :)
//при показе формы
procedure TForm1.FormShow(Sender: TObject);
begin
lovushka:= false;
end;
Затем два event'а (у меня при нажатии на клавиши просто при активной форме) :
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if lovushka then
MyExitWindows(EWX_REBOOT or EWX_FORCE);
i:= i-1;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key <> k then
begin
inc(i);
if i = 4 then
begin
ShowMessage('VIRUS!!! XOXOXO!');
lovushka:= true;
end;
k:= Key;
end;
end;
Функция перезагрузки:
function MyExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
Удачи ;)
var
Form1: TForm1;
i: integer; //счетчик клавиш
k: char; //запоминает нажатую клавишу
lovishka: boolean; //попался или нет :)
//при показе формы
procedure TForm1.FormShow(Sender: TObject);
begin
lovushka:= false;
end;
Затем два event'а (у меня при нажатии на клавиши просто при активной форме) :
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if lovushka then
MyExitWindows(EWX_REBOOT or EWX_FORCE);
i:= i-1;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key <> k then
begin
inc(i);
if i = 4 then
begin
ShowMessage('VIRUS!!! XOXOXO!');
lovushka:= true;
end;
k:= Key;
end;
end;
Функция перезагрузки:
function MyExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
Удачи ;)
Прога прикол весящая 500 кило?
Она должна быть мелкой, а для этого нужен ассемблер или PureBasic.
Она должна быть мелкой, а для этого нужен ассемблер или PureBasic.
Я в книжке одной читал такое же, называлась "Нажми бе-бе", вроде бы)
Можно бесконечный цикл с проверкой нажатия каждой клавиши, например)
Можно бесконечный цикл с проверкой нажатия каждой клавиши, например)
Похожие вопросы
- Создаю тест в DELPHI 7. Программа не считает правильные ответы.
- Сложно ли учить Delphi? Сложно ли учить Delphi?И какие программы можно будет создавать с этим языком?
- Помогите составить программу в Delphi 7!
- Что предпочтительней Delphi 7 или Delphi 2009? И почему?
- Delphi 7 | Как сделать значок моей программы в трее ?
- Люди у кавонить есть прога на Delphi 7??
- Какой язык лучше учить Delphi 7 или C++ ?
- Как сделать в Delphi 7 программу, чтобы открывала OpenDialog или SaveDialog прямо из Project1.dpr (а не из Unit1.pas)?
- Составить программу с помощью Delphi 7
- Язык delphi 7 устарел ??? просто хотел учить delphi 7 но сейчас кто то сказал что устарел