Мне очень нужна помощь... Необходимо запретить сочетания
|
|
teodelfix | Дата: Воскресенье, 18.03.2012, 22:19 | Сообщение # 1 |
Частый гость
Зарегистрирован: 25.04.2011
Группа: Пользователи
Сообщений: 25
Статус: Offline
| У меня есть прога которая должна не позволять никому в мое отсутствие распоряжаться моим рабочим столом. но есть загвоздка при банальном alt+tab или win+d вся задумка летит к чертям. Помогите пожалуйста решить эту проблему(хотя бы сделать так что бы после сворачивания тут же разворачивалось). И еще там есть кнопка "сменить пользователя", но я так подозреваю что на самом деле это "выйти из системы", тоже было бы не плохо ее поправить, но это уже вторичное. Для выхода из программы нужно щелкнуть по форме 2 раза и в появившемся окне ввести пароль"111". исходничек прилагается
|
|
| |
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) единственное что приходит пока на ум это ставить хук на клавиши которые ты хочешь заблочить Хук-так хук Так-то в инете много материала по поводу всяких блокировок Вот сделал,как ты хотел.
|
|
| |
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
| Я посмотрел код 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 Ну,если ты работаешь от админа,то диспетчер легко заблочить вот так: Нужно, чтобы даже без админки над компом можно было блочить, так что этот код не совсем подходит.
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 на пару минут клаву отключать или монитор совсем вырубить. А можно на луну полететь бесплатно. Но как - я тоже не скажу.
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 |
|
| |