Причиной написания этой статьи, как не странно, стала необходимость написания своего сервиса. Но в Borland'е решили немного "порадовать" нас, пользователей Delphi 6 Personal, не добавив возможности создания сервисов (в остальных версиях Delphi 5 и 6 эта возможность имеется в виде класса TService). Решив, что еще не все потеряно, взял на проверку компоненты из одноименного раздела этого сайта. Первый оказался с многочисленными багами, а до пробы второго я не дошел, взглянув на исходник - модуль Forms в Uses это не только окошки, но и более 300 килобайт "веса" программы. Бессмысленного увеличения размера не хотелось и пришлось творить свое.

Так как сервис из воздуха не сотворишь, то мой исходник и эта статья очень сильно опираются на MSDN.

 

Здесь представлены две функции ServiceStart и ServiceStop, которые показывают, как пользоваться API функциями OpenSCManager, OpenService и т.д.:

 

"Совместимость с windows2000 сервер" / "Windows ХР" службы терминалов являются очень важными в компьютерных сетях: каждый клиентский компьютер может эмулировать рабочий стол сервера с помощью простого исполняемого файла названный " mstsc.исполняемый." Этот исполняемый файл использует элемент управления ActiveX "MStscax", определенный в "mstscax.файл DLL." Эти файлы автоматически устанавливаются в Windows XP и Windows Server 2000, но не в ОС Windows 2000 Professional или системе Windows 98. Вы можете скачать весь пакет содержащий

 

После загрузки исполняемый файл "tsmsisetup.exe", запустите его, чтобы распаковать. Теперь давайте принять во внимание папку "System32": это папка, содержащая

"команду mstsc.exe" и "mstscax.файл DLL." Теперь зарегистрируйте элемент управления ActiveX "MsTscAx":

 

Требуется написать управление сервисом, запущеном на другом компьютере. С помошью чего это лучеше сделать? 

TScriptControl компонент должен присутствовать на вкладке вашего ActiveX.

 Запустите новое приложение и перетащите TButton и TScriptControl в основную форму.

 В событии onclick Button1 поместите следующий код:

Этот код использует преимущества недокументированного NtQuerySystemInformation

 API для получения списка загруженных драйверов в Windows NT.

 

 

 

Code:

function IsRemoteSession: Boolean;

const

sm_RemoteSession = $1000; { from WinUser.h }

begin

Result := GetSystemMetrics(sm_RemoteSession) <> 0;

end;

 

Windows 2000 и более ранних версий: все процессы предоставляются SC_MANAGER_CONNECT,

 Права доступа SC_MANAGER_ENUMERATE_SERVICE и SC_MANAGER_QUERY_LOCK_STATUS.

 

 Windows ХР: только зарегистрированные пользователи имеют SC_MANAGER_CONNECT,

 SC_MANAGER_ENUMERATE_SERVICE,

 и SC_MANAGER_QUERY_LOCK_STATUS права доступа.

 

 

Code:

{ To automatically start a service after its installation use this code }

 

procedure TMyService.ServiceAfterInstall(Sender: TService);

var

sm: TServiceManager;

begin

sm := TServiceManager.Create;

try

   if sm.Connect then

     if sm.OpenServiceConnection(self.name) then

       sm.StartService;

finally

   sm.Free;

end;

end;

 

Следующие TServiceManager класс может быть использован для управления NT-сервисами.

 Вы можете делать такие вещи как запуск, остановка, приостановка и запрос состояния.

 

  
В этой статье мы будем разбирать связь двух приложений с помощью именных каналов (named pipes). Рассмотрим типы каналов, а также создадим клиент и
сервер.
 
1.Для чего именные каналы нужны:
Именные каналы являются средством «общения» программ. Они широко используются в UNIX-подобных системах, однако и в Windows они нашли применение. С помощью именных каналов можно передать любую информацию, так как все каналы работают через файлы. Даже для чтения\записи данных в канале используется функция WinAPI для работы с файлами ReadFile() и WriteFile(). Передаваться может переменная любого типа (Integer, Boolean, Tbitmap и так далее). Однако, надо заметить, что для передачи строки, она должна быть ограничена String[40]; Иначе при чтении канала будет появляться ошибка.