Суббота, 20.04.2024, 15:46 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
delphicode » Delphi » Вопросы по Delphi » Мне очень нужна помощь... Необходимо запретить сочетания (Alt+tab, Win+d и вообще клавишу win)
Мне очень нужна помощь... Необходимо запретить сочетания
teodelfixДата: Воскресенье, 18.03.2012, 22:19 | Сообщение # 1
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
У меня есть прога которая должна не позволять никому в мое отсутствие распоряжаться моим рабочим столом. но есть загвоздка при банальном alt+tab или win+d вся задумка летит к чертям. Помогите пожалуйста решить эту проблему(хотя бы сделать так что бы после сворачивания тут же разворачивалось). И еще там есть кнопка "сменить пользователя", но я так подозреваю что на самом деле это "выйти из системы", тоже было бы не плохо ее поправить, но это уже вторичное. Для выхода из программы нужно щелкнуть по форме 2 раза и в появившемся окне ввести пароль"111". исходничек прилагается
Прикрепления: nepuskator.rar (331.9 Kb)
 
xXxSh@dowxXxДата: Понедельник, 19.03.2012, 12:29 | Сообщение # 2
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
единственное что приходит пока на ум это ставить хук на клавиши которые ты хочешь заблочить, а вобще если у тебя программа все время активна и её форма на весь экран то можно сделать проще, через события KeyDown или KeyPress точно щас не помню,исходник не смотрел пока...

Сообщение отредактировал xXxSh@dowxXx - Понедельник, 19.03.2012, 12:29
 
sk0rpi0nДата: Понедельник, 19.03.2012, 12:53 | Сообщение # 3
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Тоже недавно этот вопрос интересовал, т.к. то, что работало на ХР, на 7 не работает.
Скачал исходник, если что-то получится - выложу.
UPD: Не, не могу я эту семерку осилить... Потом, может быть...


C++ - попса :D

Сообщение отредактировал sk0rpi0n - Понедельник, 19.03.2012, 14:01
 
NeoДата: Понедельник, 19.03.2012, 16:31 | Сообщение # 4
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Quote (xXxSh@dowxXx)
единственное что приходит пока на ум это ставить хук на клавиши которые ты хочешь заблочить

Хук-так хук smile
Так-то в инете много материала по поводу всяких блокировок cool
Вот сделал,как ты хотел.
Прикрепления: 4379137.rar (183.1 Kb)
 
teodelfixДата: Понедельник, 19.03.2012, 20:20 | Сообщение # 5
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
Гениально!! Спасибо)))
 
teodelfixДата: Понедельник, 19.03.2012, 20:23 | Сообщение # 6
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
И еще, по поводу "сменить пользователя" подскажи пожалуйста... если не трудно))
 
sk0rpi0nДата: Понедельник, 19.03.2012, 21:57 | Сообщение # 7
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Quote
Хук-так хук smile

Я посмотрел код DLL-ки, попытался добавить туда CTRL+ALT+DELETE, но всё равно нажимается. Его(это сочитание) вообще можно запретить без всяких закрытий диспетчера по таймеру или отключения администратором? =)


C++ - попса :D
 
artemukДата: Понедельник, 19.03.2012, 22:22 | Сообщение # 8
Был не раз
Зарегистрирован: 31.05.2010
Группа: Пользователи
Сообщений: 17
Статус: Offline
sk0rpi0n,
можно тупо переименовать %systemroot%\system32\taskmgr.exe в что-нибудь другое или можно прописать в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe\Debugger не существующий путь
 
teodelfixДата: Вторник, 20.03.2012, 06:27 | Сообщение # 9
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
Можно на нажатие ctrl+alt забиндить выключение.... А что б не повадно было жать это сочетание!!!
 
NeoДата: Вторник, 20.03.2012, 08:40 | Сообщение # 10
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Ну,если ты работаешь от админа,то диспетчер легко заблочить вот так:
Code

Var H:THandle;
     C : PChar;
     Res: integer;
begin
   C:=StrAlloc(255);
   GetSystemDirectory(C,255);
   h:=CreateFileA(PChar(StrPas(C)+'\taskmgr.exe'),GENERIC_ALL,FILE_SHARE_WRITE +  
                    FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
   Edit1.Text:=PChar(StrPas(C)+'\taskmgr.exe');
end;
 
sk0rpi0nДата: Вторник, 20.03.2012, 20:22 | Сообщение # 11
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Quote
Ну,если ты работаешь от админа,то диспетчер легко заблочить вот так:

Нужно, чтобы даже без админки над компом можно было блочить, так что этот код не совсем подходит. sad


C++ - попса :D
 
teodelfixДата: Вторник, 20.03.2012, 20:23 | Сообщение # 12
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
не... Это заблочится диспетчер а не сочетание ctrl+alt+del и диалоговое окно все равно вылезет)) ну там где блокировка компьютера. можно при нажатии на ctrl+alt на пару минут клаву отключать или монитор совсем вырубить.
 
sk0rpi0nДата: Вторник, 20.03.2012, 20:48 | Сообщение # 13
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Quote
можно при нажатии на ctrl+alt на пару минут клаву отключать или монитор совсем вырубить.

А можно на луну полететь бесплатно. Но как - я тоже не скажу. happy


C++ - попса :D

Сообщение отредактировал sk0rpi0n - Вторник, 20.03.2012, 20:49
 
cool1Дата: Воскресенье, 25.03.2012, 13:09 | Сообщение # 14
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
Я так понял ты пишешь подобие локера)
Вырвал код из своего старого локера:
Code


procedure TForm1.Okoshko(Sender: TObject);
begin
Form1.show; //Мы поверх окон
end;

procedure TForm1.FormCreate(Sender: TObject);
var  //Нас не видно в alt+tab и таск баре
    RegProcess: function (p1, p2:integer): integer; stdcall;
    hDllKernel: HInst;
    TDWH:THandle; //Переменная для отключения диспетчера
begin
    if GetVersion >= $80000000 then begin
      hDllKernel := LoadLibrary('kernel32.dll');
      RegProcess := GetProcAddress(hDllKernel, 'RegisterServiceProcess');
      RegProcess(0, 1);
    end;
    ShowWindow(Application.Handle, SW_HIDE);
    SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE) or
      WS_EX_TOOLWINDOW);
      //Отрубаем диспетчер
      TDWH:=FindWindow(nil, 'Диспетчер задач Windows');
if TDWH=0 then ShellExecute(0,'open','taskmgr.exe',nil,nil,SW_HIDE)
else ShowWindow(TDWH,SW_HIDE);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
begin
if (ssAlt in Shift) and (Key=vk_F4) then key:=0;  //Запрещаем alt+f4
end;


Может пригодится
НАСЧЕТ TaskManager'a:
вот тебе идея - как я понял ты пишешь что-то вроде родительского контроля, задай своей программе имя csrss.exe и процесс не закроется, так же можно создать программу для мониторинга - т.е. эта программа будет следить за работой твоей осноной.
Пример:
csrss.exe - Основная программа
sysutils.exe - Программа защиты
Идея кончено же объемная, но все таки это выход



За помощь ставьте +!


Сообщение отредактировал cool1 - Воскресенье, 25.03.2012, 13:22
 
XSPYДата: Воскресенье, 25.03.2012, 19:03 | Сообщение # 15
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
не знаю что именно нужно ТСу,но как вариант просто переназначить клавиши...
могу дать код,который (у меня не пахал чегото) отключает диспетчер и клавиши,но он на СИ


Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
teodelfixДата: Понедельник, 09.04.2012, 22:46 | Сообщение # 16
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
Quote (cool1)
Может пригодится
НАСЧЕТ TaskManager'a:
вот тебе идея - как я понял ты пишешь что-то вроде родительского контроля, задай своей программе имя csrss.exe и процесс не закроется, так же можно создать программу для мониторинга - т.е. эта программа будет следить за работой твоей осноной.
Пример:
csrss.exe - Основная программа
sysutils.exe - Программа защиты
Идея кончено же объемная, но все таки это выход


Я об этом думал, но уж такая система зпщиты мне не нужна... никто из моих знакомых или друзей(и уж тем более предки и жена) не смогут обойти даже этой защиты!! а по поводу csrss.exe то способ очень не плох на тот случай если установлен сторонний диспетчер(я правда не пробовал, но вроде он должен сработать)... Спасибо)) если буду писаить защиту получше то учту))


Сообщение отредактировал teodelfix - Понедельник, 09.04.2012, 22:47
 
delphicode » Delphi » Вопросы по Delphi » Мне очень нужна помощь... Необходимо запретить сочетания (Alt+tab, Win+d и вообще клавишу win)
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz