Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 19

/ вопрос открыт /

Здравствуйте! Подскажите пожалуйста, возможно ли написать на Delphi(7, 2006) TSR?
Если да, то как?

Спасибо!

Алексей-395 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Алексей-395 (статус: Посетитель)
Вопрос отправлен: 26 мая 2006, 08:35
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: bruder

Здравствуйте, Алексей.
В приложении пример программы TSR (Terminate and Stay Resident).

Приложение:
  1. program MyResident;
  2. uses
  3. Windows,
  4. ShellAPI,
  5. Messages;
  6.  
  7. const
  8.  
  9.  
  10. var
  11.  
  12.  
  13. function MyWndProc(wnd: hWnd; msg, wParam,
  14. lParam: longint): longint; stdcall;
  15. begin
  16. case msg of
  17.  
  18.  
  19. result := 0;
  20. end;
  21.  
  22. PostQuitMessage(0);
  23. result := 0;
  24. end;
  25.  
  26. PostQuitMessage(0);
  27. result := 0;
  28. end;
  29. else Result := DefWindowProc(wnd, msg, WParam, LParam);
  30. end;
  31. end;
  32.  
  33. function CreateMyWnd: hWnd;
  34. var
  35. wc: WndClass;
  36. begin
  37.  
  38. wc.style := 0;
  39. wc.lpfnWndProc := @MyWndProc;
  40. wc.cbClsExtra := 0;
  41. wc.cbWndExtra := 0;
  42. wc.hInstance := hInstance;
  43. wc.hIcon := 0;
  44. wc.hCursor := 0;
  45. wc.hbrBackground := COLOR_WINDOW;
  46. wc.lpszMenuName := nil;
  47. wc.lpszClassName := ClassName;
  48. if RegisterClass(wc) = 0 then halt(0);
  49.  
  50. result := CreateWindowEx(WS_EX_APPWINDOW, ClassName,
  51. 'My Window', WS_POPUP, 0, 0, 0, 0, 0, 0, hInstance, nil);
  52. if result = 0 then halt(0);
  53. end;
  54.  
  55. var
  56. msg: TMsg;
  57.  
  58. begin
  59.  
  60.  
  61.  
  62.  
  63.  
  64. while (GetMessage(msg, 0, 0, 0)) do begin
  65. TranslateMessage(msg);
  66. DispatchMessage(msg);
  67. end;
  68.  
  69.  
  70. 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

bruder (статус: 4-ый класс), 4 июня 2006, 10:23 [#1]:

Алексей. А расшифровать, то что Вы написали можно?
А то я както не силён в иероглифах :(
РџСЂРѕС?Сѓ прощения, РјРѕСЏ РѕС?РёР±РєР° - РЅРµ дописал DOS... РќРѕ как РјРЅРµ кажется, tsr - dos как само СЃРѕР±РѕР№ разумеющееся...
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 12 июня 2006, 09:40 [#2]:

Проблемы с кодировкой UTF-8 устранены.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 августа 2017, 15:04
Выполнено за 0.05 сек.
Рейтинг@Mail.ru