Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как затормозить Винду?


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 и найдешь (как ни странно для этого сайта) там хороший пример хука на клавиатуру.


Наверх

Титульная страница Поиск, карта сайта Написать письмо