![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программа для блокировки [D7, WinXP]
Legolas © (2008-01-29 04:32:00)Подскажите как можно блокировать доступ к другим окнам, сделав окно своей программы постоянно активным. Передача моему окну сообщения WM_ACTIVATE и перехват хуков HCBT_ACTIVATE для деактивации других окон не помогает. Хотел написать что-то вроде блокирующей программы.
Игорь Шевченко (2008-04-13 00:12:00) [1]Riply © (12.04.08 22:35) [4]
> но как только (в первых же строчках) натолкнулась
> на неведомые мне магические цифры "SystemParametersInfo
> (18+97, ...",
Это всего лишь SPI_GETDESKWALLPARER - зачем такой вид (18+97) - ну наверное круто. Или экземпляр ошибся, хотел поставить комбинацию для секретной константы SPI_SETSCREENSAVERRUNNING (она просто 97), но даже в этом случае этот код будет действовать для Win95 и Win98, об чем честно предупреждает Microsoft ( http://support.microsoft.com/kb/226359) и Пол Дилация в одной из своих статей.
Riply (2008-04-12 22:35:00) [2]> [3] xex32 (12.04.08 22:12)
> Пытаюсь сделать тоже самое
Хотела было посмотреть код, но как только (в первых же строчках) натолкнулась
на неведомые мне магические цифры "SystemParametersInfo (18+97, ...",
сразу поняла, что мне здесь делать нечего :)
xex32 (2008-04-12 22:12:00) [3]Пытаюсь сделать тоже самое
xex32 (2008-04-12 22:06:00) [4]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Registry;
type
TForm1 = class(TForm)
Shape1: TShape;
Label1: TLabel;
Shape2: TShape;
Timer1: TTimer;
Shape3: TShape;
Label2: TLabel;
Edit1: TEdit;
Button1: TButton;
Label3: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ExtendedStyle : integer;
reg: TRegistry;
Disable:Boolean;
i,y:integer;
z:integer;
implementation
{$R *.dfm}
procedure TurnSysKeysBackOn;
var
OldVal : LongInt;
begin
SystemParametersInfo (18+97, Word (True), @OldVal, 0)
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape2.Left:=Shape2.Left-i;
Shape2.top:=Shape2.top-y;
if Shape2.Left<=Form1.Left then i:=i*(-1);
if Shape2.top<=Form1.top then y:=y*(-1);
if Shape2.left+Shape2.width>=Form1.width then i:=i*(-1);
if Shape2.top+Shape2.Height>=Form1.height then y:=y*(-1);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software', True);
reg.OpenKey('Microsoft', True);
reg.OpenKey('Windows', True);
reg.OpenKey('CurrentVersion', True);
reg.OpenKey('Policies', True);
reg.OpenKey('System', True);
reg.WriteString('DisableTaskMgr', '1');
reg.CloseKey;
EnableWindow(FindWindow('Shell_TrayWnd', nil), FALSE);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
ShowWindow(Application.Handle, SW_HIDE) ;
SetWindowLong(Application.Handle, GWL_EXSTYLE, getWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW) ;
ShowWindow(Application.Handle, SW_SHOW) ;
z:=0;
i:=1;
y:=1;
end;
procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape3.Visible:=true;
Label2.Visible:=true;
Edit1.Visible:=true;
Edit1.SetFocus;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.text='everest' then
begin
EnableWindow(FindWindow('Shell_TrayWnd', nil), TRUE);
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software', True);
reg.OpenKey('Microsoft', True);
reg.OpenKey('Windows', True);
reg.OpenKey('CurrentVersion', True);
reg.OpenKey('Policies', True);
reg.OpenKey('System', True);
reg.WriteString('DisableTaskMgr', '');
reg.CloseKey;
Form1.Close;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnableWindow(FindWindow('Shell_TrayWnd', nil), TRUE);
Close;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label3.Caption:=IntToStr(key);
if key=vk_menu then
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if (Edit1.Visible=true)and (Edit1.Text='everest') then
begin
CanClose:=True;
end
else CanClose:=False;
end;
end.
Leonid Troyanovsky (2008-01-29 12:14:00) [5]
> Legolas (29.01.08 04:32)
> Подскажите как можно блокировать доступ к другим окнам,
> сделав окно своей программы постоянно активным.
Пускать ее на отдельном десктопе.
Кста, тут кто-то спрашивал про меню Пуск,
так тоже пусть пускает туда ж.
--
Regards, LVT.