Текущий архив: 2003.10.16;
Скачать: CL | DM;
Вниз
Как затормозить Винду? Найти похожие ветки
← →
pro100max (2003-07-30 08:19) [0]Помогите, люди!
У меня возникла определенная проблема, может и не очень сложная, но решить сам я ее не могу. Так вот мой вопрос - можно ли одновременно с выведением на экран окна ПОЛНОСТЬЮ затормозить работу Win98 (чтобы нельзя было работать с другими окнами, типа как при нажатии Ctrl+Alt+Del)? Если кто-либо обладает решением подобной проблемы под Delphi 5 - не поленитесь мне прислать, и я буду очень благодарен!
Макс
← →
Calm © (2003-07-30 08:38) [1]Ну так тебе нужно поставить хук на клавиатуру и мышку и в нем блокировать все движения пользователя.
Ищи в местном FAQ по слову Hook и найдешь (как ни странно для этого сайта) там хороший пример хука на клавиатуру.
← →
ZZ © (2003-07-30 11:40) [2]Добрые люди советуют - чтобы заторомозить винду на нее надо поставить AVP...
← →
default © (2003-07-30 11:40) [3]asm cli end;
← →
VMcL © (2003-07-30 14:02) [4]>default © (30.07.03 11:40)
Лучше так (только в Win9x):
asm
@@1: cli
jmp @@1
end;
← →
VMcL © (2003-07-30 14:03) [5]Oops, неаккуратненько.
asm
@@1: cli
jmp @@1
end;
← →
AlexRush © (2003-07-30 14:24) [6]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] и неважно, сколько ГигаГерцов...
← →
xShadow © (2003-07-30 14:38) [7]
> AlexRush © (30.07.03 14:24)
Штопор конечно классный, то как потом вывести из него ?!
← →
AlexRush © (2003-07-30 17:19) [8]2 xShadow © (30.07.03 14:38) А выити, типа, никак.
Вопрос стоял "затормозить". А заблокировать работу с другими окнами можно через хуки (клавы и мыши, для особо злосных - хук на оконые сообщения). Проверять, адресовано ли сообщение твоему окну (его дочерним), если да -разрешить, иначе - болт на 16.
← →
Е-Моё имя © (2003-07-30 17:49) [9]>>Как затормозить Винду?
выпить фанты?
← →
xShadow © (2003-07-30 18:10) [10]Когда то в далёком детстве делал я так:
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
← →
Shurik (2003-07-30 22:12) [11]I := True;
While I do;
← →
VMcL © (2003-07-31 14:40) [12]>AlexRush © (30.07.03 14:24)
>2VMcL © (30.07.03 14:03) АРХИнеаккуратненько.
>CLI - привелигированая инструкция.
Читай внимательно: только в Win9x
← →
AlexRush © (2003-07-31 16:50) [13]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х не имеет никакого эффекта.
← →
NightAngel © (2003-07-31 20:58) [14]> AlexRush © (30.07.03 14:24)
В общем эффект в NT системах - впечатляет, мыша виснет, клавиатура отдыхает. А вот в Win9х/ME: CTRL+ALT+DEL -> End Task и все дела. :) В этом случае, компьютер остаётся рабочим, машина в сети, пингуется, но подрубиться к ней нельзя.
Насчётasm CLI end
всё верно, но если это дело зациклить, то Win9x/ME вешается (вообще-то при этом типе исключения производится рестарт "виноватой" команды после исправления ситуации, для чего в стеке обработчика адрес возврата из прерывания указывает на команду, вызвавшую исключение. Отсюда и все проблемы).
← →
AlexRush © (2003-08-01 12:25) [15]2NightAngel © (31.07.03 20:58) Вполне может быть.У меня сейчас нет под рукой (и вообще рядом) установленной 9х - проверить не могу.
P.S. В глубине души я надеюсь, что через пару лет 9х окончательно исчезнет с винтов юзеров и я навсегда забуду об обеспечении совместимости еще и с ней. Каловая ось...
← →
Morfein © (2003-08-01 13:24) [16]>>AlexRush
CLI под 9x срабатывает прекрасно. Сделай .com файл, запиши в него #250 #235 #253, запусти под 9х и полюбуйся на неимеющюю эффекта инструкцию.
← →
AlexRush © (2003-08-01 16:55) [17]Дак то ж COM... Какое он отношение имеет к защищенному режиму ??
← →
Yanis © (2003-08-01 18:02) [18]Может этот вопрос:"Как затормозить Винду?", в отдельную конференцию вынести надо? А вообще зачем тормозить винду, она и сама неплохо с этим справляется.
← →
Morfein © (2003-08-02 02:13) [19]>>AlexRush
Сейчас ты нам расскажешь, как система для выполнения .com переходит в реальный режим :))
Не нравится пример c .com, напиши
asm
db $ff
db $eb
db $fd
end;
хотя это тож самое, что и VMcL © (30.07.03 14:03)
← →
Anatoly Podgoretsky © (2003-08-02 12:34) [20]Это ты нам расскажи как это сом работает в виндоус
Страницы: 1 вся ветка
Текущий архив: 2003.10.16;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.029 c