![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как затормозить Винду?
pro100max © (2003-07-30 08:19:00)
Помогите, люди!
У меня возникла определенная проблема, может и не очень сложная, но решить сам я ее не могу. Так вот мой вопрос - можно ли одновременно с выведением на экран окна ПОЛНОСТЬЮ затормозить работу Win98 (чтобы нельзя было работать с другими окнами, типа как при нажатии Ctrl+Alt+Del)? Если кто-либо обладает решением подобной проблемы под Delphi 5 - не поленитесь мне прислать, и я буду очень благодарен!
Макс
Anatoly Podgoretsky (2003-08-02 12:34:00) [1]
Это ты нам расскажи как это сом работает в виндоус
Morfein (2003-08-02 02:13:00) [2]
>>AlexRush
Сейчас ты нам расскажешь, как система для выполнения .com переходит в реальный режим :))
Не нравится пример c .com, напиши
asm
db $ff
db $eb
db $fd
end;
хотя это тож самое, что и VMcL © (30.07.03 14:03)
Yanis (2003-08-01 18:02:00) [3]
Может этот вопрос:"Как затормозить Винду?", в отдельную конференцию вынести надо? А вообще зачем тормозить винду, она и сама неплохо с этим справляется.
AlexRush (2003-08-01 16:55:00) [4]
Дак то ж COM... Какое он отношение имеет к защищенному режиму ??
Morfein (2003-08-01 13:24:00) [5]
>>AlexRush
CLI под 9x срабатывает прекрасно. Сделай .com файл, запиши в него #250 #235 #253, запусти под 9х и полюбуйся на неимеющюю эффекта инструкцию.
AlexRush (2003-08-01 12:25:00) [6]
2NightAngel © (31.07.03 20:58) Вполне может быть.У меня сейчас нет под рукой (и вообще рядом) установленной 9х - проверить не могу.
P.S. В глубине души я надеюсь, что через пару лет 9х окончательно исчезнет с винтов юзеров и я навсегда забуду об обеспечении совместимости еще и с ней. Каловая ось...
NightAngel (2003-07-31 20:58:00) [7]
> AlexRush © (30.07.03 14:24)
В общем эффект в NT системах - впечатляет, мыша виснет, клавиатура отдыхает. А вот в Win9х/ME: CTRL+ALT+DEL -> End Task и все дела. :) В этом случае, компьютер остаётся рабочим, машина в сети, пингуется, но подрубиться к ней нельзя.
Насчётasm CLI endвсё верно, но если это дело зациклить, то Win9x/ME вешается (вообще-то при этом типе исключения производится рестарт "виноватой" команды после исправления ситуации, для чего в стеке обработчика адрес возврата из прерывания указывает на команду, вызвавшую исключение. Отсюда и все проблемы).
AlexRush (2003-07-31 16:50:00) [8]2 VMcL © (31.07.03 14:40)Даже для 9х (даже для OS/2 и супер-пупер мегаЮНИКС) CLI есть привелигированная инструкция.
В защищенном режиме эта инструкция является привелигированной ( потомков i386.)2 VMcL © (31.07.03 14:40)Даже для 9х (даже для OS/2 и супер-пупер мегаЮНИКС) CLI есть привелигированная инструкция.
В защищенном режиме эта инструкция является привелигированной для всех процессоров (потомков i386.) неважно под какой осью.
В 9х исключение PrivelegedInstuction обрабатывается тихо, без каких либо сообщений на эту тему. Управление передается на инструкцию, следующию за вызвавшей ошибку.
Так что кодasm CLI end;под 9х не имеет никакого эффекта.
VMcL (2003-07-31 14:40:00) [9]
>AlexRush © (30.07.03 14:24)
>2VMcL © (30.07.03 14:03) АРХИнеаккуратненько.
>CLI - привелигированая инструкция.
Читай внимательно: только в Win9x
Shurik (2003-07-30 22:12:00) [10]
I := True;
While I do;
xShadow (2003-07-30 18:10:00) [11]Когда то в далёком детстве делал я так:
procedure LockPC;
var OldValue: LongBool;
begin
SystemParametersInfo(97, Word(Bool), @OldValue, 0);
WinExec(PChar("rundll32 mouse,disable"), SW_HIDE);
( PChar("rundll32 keyboard,disable")Когда то в далёком детстве делал я так:
procedure LockPC;
var OldValue: LongBool;
begin
SystemParametersInfo(97, Word(Bool), @OldValue, 0);
WinExec(PChar("rundll32 mouse,disable"), SW_HIDE);
WinExec(PChar("rundll32 keyboard,disable"), SW_HIDE);
end;
Не проверял под NT/ME/2000/XP
Е-Моё имя (2003-07-30 17:49:00) [12]
>>Как затормозить Винду?
выпить фанты?
AlexRush (2003-07-30 17:19:00) [13]
2 xShadow © (30.07.03 14:38) А выити, типа, никак.
Вопрос стоял "затормозить". А заблокировать работу с другими окнами можно через хуки (клавы и мыши, для особо злосных - хук на оконые сообщения). Проверять, адресовано ли сообщение твоему окну (его дочерним), если да -разрешить, иначе - болт на 16.
xShadow (2003-07-30 14:38:00) [14]
> AlexRush ©(30.07.03 14:24)
Штопор конечно классный, то как потом вывести из него ?!
AlexRush (2003-07-30 14:24:00) [15]
2VMcL © (30.07.03 14:03) АРХИнеаккуратненько.
CLI - привелигированая инструкция.
program down;
uses windows;
{$R *.RES}
begin
asm
call GetCurrentProcess
push $00000100
push eax
call SetPriorityClass
call GetCurrentThread
push $0F
push eax
call SetThreadPriority
@@_jamper: jmp @@_jamper;
end;
end.
Ни те мыша не двигается, ни те [ctrl+alt+del] и неважно, сколько ГигаГерцов...
VMcL (2003-07-30 14:03:00) [16]
Oops, неаккуратненько.
asm
@@1: cli
jmp @@1
end;
VMcL (2003-07-30 14:02:00) [17]
>default © (30.07.03 11:40)
Лучше так (только в Win9x):
asm
@@1: cli
jmp @@1
end;
default (2003-07-30 11:40:00) [18]
asm cli end;
ZZ (2003-07-30 11:40:00) [19]
Добрые люди советуют - чтобы заторомозить винду на нее надо поставить AVP...
Calm (2003-07-30 08:38:00) [20]
Ну так тебе нужно поставить хук на клавиатуру и мышку и в нем блокировать все движения пользователя.
Ищи в местном FAQ по слову Hook и найдешь (как ни странно для этого сайта) там хороший пример хука на клавиатуру.