Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

Как отключить кнопку Пуск   Найти похожие ветки 

 
Данилин Руслан   (2002-07-19 14:02) [0]

Как сделать, чтобы по нажвтию Ctrl + Esc меню не всплывало.


 
Song   (2002-07-19 14:33) [1]

1. Написать хук на перехватывание этой комбинации.
2. Закрыть/заблокировать саму кнопку.


 
Beglec   (2002-09-20 21:22) [2]

Есть на много просче вариант, через реестр. Очень даже эффективный


 
Aralekin   (2002-09-21 13:14) [3]

Не надо писать хуков и ДЛЛ...
И в Рею тоже лишний раз залазить не надо...

Просто запускаешь режим заставки и все!...Т.Е. полная блокировка до какого-нибудь события анпример ввода определенной комбинации клавиш
Давным давно писал такой Locker. Вот код:

procedure TForm1.FormCreate(Sender: TObject);
var
hTaskBar : THandle;
i : integer;
begin

// Отрубаем показ приложения по C+A+D

if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);

// Скраваем TaskBar

hTaskbar := FindWindow("Shell_TrayWnd", Nil);
ShowWindow(hTaskBar, SW_HIDE);

// Врубаем режим заставки

i := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @i, 0);
i := 0;
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @i, 0);


Обратный код:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
hTaskBar : THandle;
i : integer;
begin
// Включаем показ приложения по C+A+D

if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);

// Возвращаем TaskBar на место

hTaskbar := FindWindow("Shell_TrayWnd", Nil);
ShowWindow(hTaskBar, SW_SHOWNORMAL);

// Отключаем режим заставки

i := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @i, 0);
i := 0;
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, @i, 0);

End;


Не забудь подключить Shellapi.pas
Если нужен полный код, то пиши на мыло.
Если что-то не понятно - спрашивай

Да. и еще...догадайся сам как можно заблокировать Alt+F4 .:))


 
Aralekin   (2002-09-21 13:14) [4]

Не надо писать хуков и ДЛЛ...
И в Рею тоже лишний раз залазить не надо...

Просто запускаешь режим заставки и все!...Т.Е. полная блокировка до какого-нибудь события анпример ввода определенной комбинации клавиш
Давным давно писал такой Locker. Вот код:

procedure TForm1.FormCreate(Sender: TObject);
var
hTaskBar : THandle;
i : integer;
begin

// Отрубаем показ приложения по C+A+D

if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);

// Скраваем TaskBar

hTaskbar := FindWindow("Shell_TrayWnd", Nil);
ShowWindow(hTaskBar, SW_HIDE);

// Врубаем режим заставки

i := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @i, 0);
i := 0;
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @i, 0);


Обратный код:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
hTaskBar : THandle;
i : integer;
begin
// Включаем показ приложения по C+A+D

if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);

// Возвращаем TaskBar на место

hTaskbar := FindWindow("Shell_TrayWnd", Nil);
ShowWindow(hTaskBar, SW_SHOWNORMAL);

// Отключаем режим заставки

i := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @i, 0);
i := 0;
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, @i, 0);

End;


Не забудь подключить Shellapi.pas
Если нужен полный код, то пиши на мыло.
Если что-то не понятно - спрашивай

Да. и еще...догадайся сам как можно заблокировать Alt+F4 .:))


 
Igor__   (2002-09-22 04:56) [5]


> Aralekin

Я конечно дико извинтиляюсь, но этот код
под XP не пашет(кроме скрытия таскбара), хотя под 9x все нормально:
1.Не существует RegisterServiceProcess в Kernel32.dll
2.Режим заставки не врубается


 
Song   (2002-09-22 17:35) [6]

2Igor__ © (22.09.02 04:56)
Просто люди, кроме выдержек из любого FAQ больше ничего предложить не могут.
Этот код не будет работать в ОС семейства NT.


 
Beglec   (2002-09-26 05:09) [7]

Чтобы не работал пуск в NT

procedure NotButton(bButton: boolean);
begin
if not bButton then
begin
Tray:=FindWindow("Shell_TrayWnd",nil);
Child:=GetWindow(Tray,GW_CHILD);
While Child<>0do
begin
if GetClassName(Child,CaptionWnd,SizeOf(CaptionWnd))>0 then
begin
if UpperCase(StrPAS(CaptionWnd))="BUTTON" then begin PostMessage(Child,wm_close,0,0); Exit; end;
end;
Child:=GetWindow(Child,GW_HWNDNEXT);
end;
end;
end;


 
Beglec   (2002-09-26 05:10) [8]

Причем данная херня работает и в Win9x

А вообще я отказался от процедур SystemParametersInfo!!!
Потому как очень много таких процедур не робят под NT движок :(


 
msts   (2002-09-26 11:37) [9]

А какую задачу решает народ? (стратегическую?)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-82626
KPOT
2002-11-04 18:00
2002.11.25
Zapolnenie DBGrid.


4-83061
Th
2002-10-09 17:22
2002.11.25
Не грузится dll, написанная в VC++ ;((


6-82884
Граф
2002-09-27 05:36
2002.11.25
как закачать файл по локальной сети с возможностью докачки


3-82642
demoniada
2002-11-06 12:16
2002.11.25
а мона ли в DB гриде...


7-83023
Terrible
2002-09-24 16:09
2002.11.25
Запуск приложения с правами пользователя, который вошёл в систему





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский