| 
| 
 | Вопрос # 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 устранены. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |