Форум: "WinAPI";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
ВнизПрограмма для блокировки Найти похожие ветки
← →
Legolas (2008-01-29 04:32) [0]Подскажите как можно блокировать доступ к другим окнам, сделав окно своей программы постоянно активным. Передача моему окну сообщения WM_ACTIVATE и перехват хуков HCBT_ACTIVATE для деактивации других окон не помогает. Хотел написать что-то вроде блокирующей программы.
← →
Leonid Troyanovsky © (2008-01-29 12:14) [1]
> Legolas (29.01.08 04:32)
> Подскажите как можно блокировать доступ к другим окнам,
> сделав окно своей программы постоянно активным.
Пускать ее на отдельном десктопе.
Кста, тут кто-то спрашивал про меню Пуск,
так тоже пусть пускает туда ж.
--
Regards, LVT.
← →
xex32 (2008-04-12 22:06) [2]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.
← →
xex32 (2008-04-12 22:12) [3]Пытаюсь сделать тоже самое
← →
Riply © (2008-04-12 22:35) [4]> [3] xex32 (12.04.08 22:12)
> Пытаюсь сделать тоже самое
Хотела было посмотреть код, но как только (в первых же строчках) натолкнулась
на неведомые мне магические цифры "SystemParametersInfo (18+97, ...",
сразу поняла, что мне здесь делать нечего :)
← →
Игорь Шевченко © (2008-04-13 00:12) [5]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) и Пол Дилация в одной из своих статей.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c