Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Резидентная программа   Найти похожие ветки 

 
Master Paleva ©   (2004-04-26 11:38) [0]

Скажите пожалуйста, как сделать Delphi-программу резидентной в памяти и какие ограничения(примерно) для этого существуют.


 
Vlad Oshin ©   (2004-04-26 11:45) [1]

file -> new application -> F9


 
Андрей Сенченко ©   (2004-04-26 11:46) [2]

Опишите пожалуйста Ваше понимание резидентности Windows-приложения


 
WondeRu ©   (2004-04-26 11:50) [3]

Здорово!)))
В Windows все проги "резидентные"))))


 
Master Paleva ©   (2004-04-26 11:51) [4]

Резидентная программа в моем понимании - это программа, обслуживающая прерывания, т.е. запускается только при нажатии определённ/ых/ой клавиш(ы).


 
Vlad Oshin ©   (2004-04-26 11:56) [5]


> Master Paleva ©   (26.04.04 11:51) [4]
> Резидентная программа в моем понимании - это программа,
> обслуживающая прерывания, т.е. запускается

не запускается, а обрабатывает сигнал, например нажатии определённ/ых/ой клавиш(ы).

http://pascal.sources.ru/asm/faq/index.htm#wintsr
вот ссылка, но нафиг это нужно?


 
Master Paleva ©   (2004-04-26 11:57) [6]

Могу сказать, что в Паскале это реализуется посредством процедуры Keep.


 
Ozone ©   (2004-04-26 11:58) [7]

Это понятие еще из DOS перетекло, как я понимаю.
Вам же нужно, как мне кажется, просто при загрузке программы делать ее невидимой и "ловить" все, что Вам нужно.


 
Master Paleva ©   (2004-04-26 11:59) [8]

Для общего развития.
P.S. Спасибо большое!


 
Юрий Зотов ©   (2004-04-26 12:06) [9]

> Master Paleva ©   (26.04.04 11:51) [4]
> Резидентная программа в моем понимании...

В переводе с английского, слово "resident" означает "постоянный житель". То есть, резидентная программа - это просто программа, постоянно находящаяся в памяти. Такие программы не выгружаются при запуске других программ и продолжают работать до тех пор, пока не будут выгружены специально.

Поэтому в мультизадачной среде любая запущенная программа сразу же становится резидентной. А уж как там она запускается и что обрабатывает - это совершенно неважно.


 
Anatoly Podgoretsky ©   (2004-04-26 12:09) [10]

Master Paleva ©   (26.04.04 11:51) [4]
В рамках виндоус это называется драйвер

Master Paleva ©   (26.04.04 11:57) [6]
Это частный случай управления память, оставить в памяти часть кода и отдать управление системе. В виндоус для отдачи управления системе ничего делать не надо, а по управлению памятью большое количество функций.


 
Юрий Зотов ©   (2004-04-26 12:22) [11]

> Master Paleva ©   (26.04.04 11:59) [8]

Для общего развития, говорите?

А как тогда понимать вот это:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?n=2&id=1082965653

Человек "для общего развития" хочет сделать "резидентную программу", перехватывающую какие-то там сигналы (например, сигналы клавиш). При этом он хочет либо блокировать вызов списка задач, либо сделать так, что та же самая программа автоматически запускалась при его закрытии. В общем, чтоб она неубиваемой была.

Странное какое-то "общее развитие" получается. Больше на недоразвитие похоже.

Может, лучше делом заняться, а не дешевым вредительством?


 
Anatoly Podgoretsky ©   (2004-04-26 12:34) [12]

И ник странный, навевает на кой какие раздумья


 
Андрей Сенченко ©   (2004-04-26 13:43) [13]

Да чего там навевает - сами ж скинули в "систему" его же вопрос про Ctrl-Alt-Del.

Всё прозрачно


 
Master Paleva ©   (2004-04-29 09:26) [14]

>Юрий Зотов ©   (26.04.04 12:22) [11]
Для "дела" я ещё не дорос, так как изучаю Делфи всего 5 дней.
А для "вредительства" много ума, зачастую, не надо. Впрочем я послушаюсь твоего совета и попытаюсь заняться делом.
P.S.Спасибо за совет.


 
Master Paleva ©   (2004-04-29 09:35) [15]

>Юрий Зотов ©   (26.04.04 12:22) [11]
Извините, что обратился к вам на "ты". Я это сделал совершенно случайно. Надеюсь, вы на меня не обиделись.


 
Юрий Зотов ©   (2004-04-29 09:46) [16]

> Master Paleva

Никаких обид, все нормально. Только... вот что ... "для вредительства" много ума, зачастую, не надо" - неверно это.

Приличный, скажем, вирус - штука очень непростая и чтобы такие писать надо для начала стать очень неслабым программистом - вот чем есть смысл заняться. Не вирусом, а серьезным программизмом, имеется в виду.

А после этого обычно и вредительство неинтересным становится.
:о)


 
Master Paleva ©   (2004-04-29 09:53) [17]

Ладно, черт с этой резидентной программой. Сформулирую вопрос иначе. Как сделать так, чтобы программа запускалась (например, из таскбара) при нажатии какой-либо комбинации клавиш. То есть, чтобы программа постоянно отслеживала прерывания(или какие-то действия, в данном случае это нажатие определённых клавиш).

Почему я вообще задал такой вопрос(про резидентную программу).
Просто я перехожу на Делфи с Паскаля и пытаюсь провести...Черт, забыл умное слово. Но, надеюсь, вы поняли, что я имею ввиду.

А вредительством я не занимаюсь. Вопрос про комбинацию клавиш
ALT+CTRL+Delete я задал для того, чтобы лучше понять возможности Делфи(можете мне не верить).


 
Master Paleva ©   (2004-04-29 10:16) [18]

Возвращаю себя наверх.


 
Андрей Сенченко ©   (2004-04-29 10:28) [19]

Master Paleva ©   (29.04.04 09:53) [17]

То есть, чтобы программа постоянно отслеживала прерывания(или какие-то действия, в данном случае это нажатие определённых клавиш).

"Клавиатурный хук" + поиск.
Около полутора лет назад в "Потрепаться" был шикарный пример, выведенный Мастерами, в том числе Ю.Зотовым. Посмотрите архив или кладовку


 
Master Paleva ©   (2004-04-29 10:43) [20]

Да, я нашел там что-то про горячие клавиши(ещё не прочитал, но надеюсь это то, что мне нужно). Спасибо за совет.
А как сделать так, чтобы программа активировалась из таскбара при нажатии комбинации клавиш.


 
Юрий Зотов ©   (2004-04-29 10:47) [21]

> Master Paleva ©   (29.04.04 09:53) [17]

Незапущенная программа, естественно, не работает и отслеживать ничего не может. Поэтому отследить комбинацию клавиш и что-то там сделать может только другая программа, уже запущенная. Значит, Вам нужно написать 2 программы - запускающую и основную.

Запускающую программу можно стартовать автоматически, вместе с самой системой. Для этого нужно либо прописать ее в реестре под ключом Run, либо создать ярлык и поместить его в меню "Автозагрузка". Хорошим тоном было бы сделать ее окно невидимым, но при этом поместить ее иконку в трей, а к иконке привязать меню. Как уже говорилось, никаких специальных мер по ее резидентности предпринимать не требуется.

Отслеживать комбинации клавиш программа сможет, если вызовет RegisterHotKey или поставит глобальную ловушку (hook), причем первое проще. Но к системным комбинациям клавиш, таким как Ctrl+Alt+Del это не относится. Они обрабатываются самой системой и для их перехвата надо лезть гораздо глубже. Сделать это можно, но не нужно - незачем мешать системе и юзеру нормально работать.

Примеров на все эти темы в Сети полно. Например, посмотрите на этом же сайте раздел FAQ.

О прерываниях. Прямая работа прикладных программ с прерываниями в Windows запрещена, потому что это среда мультизадачная и если каждая программа напрямую полезет в прерывания, то получится полный, извините, бардак. Это делается на уровне драйверов.


 
Master Paleva ©   (2004-04-29 10:55) [22]

> Юрий Зотов ©   (29.04.04 10:47) [21]
Спасибо! Ваш ответ полностью исчерпал мой вопрос.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.03 c
14-1082793068
Beglec
2004-04-24 11:51
2004.05.16
Извините не смог удержаться


1-1083221846
Ega23
2004-04-29 10:57
2004.05.16
"Потрепаться" на "Основную" выбрасывает


14-1083162405
reticon_
2004-04-28 18:26
2004.05.16
Поздравьте меня :)


4-1080353007
MPS
2004-03-27 05:03
2004.05.16
Принудительное закрытие контекстного меню


14-1082889238
ИМХО
2004-04-25 14:33
2004.05.16
Связь между работой модераторов на форуме и его популярностью?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский