|
Вопрос # 19/ вопрос открыт / |
|
Здравствуйте! Подскажите пожалуйста, возможно ли написать на Delphi(7, 2006) TSR?
Если да, то как?
Спасибо!
 |
Вопрос задал: Алексей-395 (статус: Посетитель)
Вопрос отправлен: 26 мая 2006, 08:35
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: bruder
Здравствуйте, Алексей.
В приложении пример программы TSR (Terminate and Stay Resident).
Приложение: Переключить в обычный режим- program MyResident;
- uses
- Windows,
- ShellAPI,
- Messages;
-
- const
-
-
- var
-
-
- function MyWndProc(wnd: hWnd; msg, wParam,
- lParam: longint): longint; stdcall;
- begin
- case msg of
-
-
- result := 0;
- end;
-
- PostQuitMessage(0);
- result := 0;
- end;
-
- PostQuitMessage(0);
- result := 0;
- end;
- else Result := DefWindowProc(wnd, msg, WParam, LParam);
- end;
- end;
-
- function CreateMyWnd: hWnd;
- var
- wc: WndClass;
- begin
-
- wc.style := 0;
- wc.lpfnWndProc := @MyWndProc;
- wc.cbClsExtra := 0;
- wc.cbWndExtra := 0;
- wc.hInstance := hInstance;
- wc.hIcon := 0;
- wc.hCursor := 0;
- wc.hbrBackground := COLOR_WINDOW;
- wc.lpszMenuName := nil;
- wc.lpszClassName := ClassName;
- if RegisterClass(wc) = 0 then halt(0);
-
- result := CreateWindowEx(WS_EX_APPWINDOW, ClassName,
- 'My Window', WS_POPUP, 0, 0, 0, 0, 0, 0, hInstance, nil);
- if result = 0 then halt(0);
- end;
-
- var
- msg: TMsg;
-
- begin
-
-
-
-
-
- while (GetMessage(msg, 0, 0, 0)) do begin
- TranslateMessage(msg);
- DispatchMessage(msg);
- end;
-
-
- end.
 |
Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 26 мая 2006, 09:16
Оценка за ответ: 4
Комментарий к оценке: Прошу прощения, моя ошибка - не дописал DOS... Но как мне кажется, tsr - dos как само собой разумеющееся...
|
Ответ #2. Отвечает эксперт: Вадим К
Соглашусь с предыдущим экспертом, но добавлю
TSR - это программы времён DOS'а которые оставались в памяти и делали какую-то полезную и (не очень) работу. Просто тогда не было многозадачности (нельзя было запускать две программы одновременно). Сейчас это дивно, а тогода - норма.
Сейчас операционная система хорошо разруливает десятки приложений и всё работает. В данный момент наиболее вероятной заменой есть сервисы, драйвера (писать на делфи можно, правда только в 3 да ещё с извратом) и хуки.
То что предложил предыдущий эксперт - это обычная программа (хоть и написана на WinAPI)которая создаёт невидимое окно (в понятии делфи - форму) и регистрирует глобальную горячюю клавишу. Резонный вопрос: а зачем нам окно, если мы его не отображаем и вроде не используем?
Отвечаю. Для того, чтобы ваша программа могла обработать сообщения таймера и сообщение о том, что была нажата горячая клавиша, у ваше приложения должно быть окно. Так устроена Windows, она должна знать куда слать сообщения.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 26 мая 2006, 11:29
Оценка за ответ: 4
Комментарий к оценке: Прошу прощения, моя ошибка - не дописал DOS... Но как мне кажется, tsr - dos как само собой разумеющееся... Я и хотел спросить: возможно ли написать tsr именно для DOS? на С++ я знаю такое написать можно, вот я и подумал, может и на delphi возможно...
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 12 июня 2006, 09:40; участников в обсуждении: 2.
|
bruder (статус: 4-ый класс), 4 июня 2006, 10:23 [#1]:
Алексей. А расшифровать, то что Вы написали можно?
А то я както не силён в иероглифах 
РџСЂРѕС?Сѓ прощения, РјРѕСЏ РѕС?РёР±РєР° - РЅРµ дописал DOS... РќРѕ как РјРЅРµ кажется, tsr - dos как само СЃРѕР±РѕР№ разумеющееся...
|
|
Ерёмин А.А. (статус: *Администратор), 12 июня 2006, 09:40 [#2]:
Проблемы с кодировкой UTF-8 устранены.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|