Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 669

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 215

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 643

•  Перетаскивание изображений  4 759

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 798

•  Генератор лабиринта  2 240

•  Проверка числового ввода  1 925

•  HEX View  2 225

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Обнаружить терминальные сервисы



Оформил: DeeCo

{ 
 Question: 

 Do you happen to have a sample piece of code for detecting if Terminal 
 Services is loaded?  I found this piece of C code, but I'm having a hard 
 time translating things... 
}

 function IsRemoteSession: Boolean;
 const
   sm_RemoteSession = $1000; { from WinUser.h }
 begin
   Result := (GetSystemMetrics(sm_RemoteSession) <> 0);
 end;

 { 
  That tells you if your program is running in a terminal client session, 
  which is usually all you ever need to worry about. 
}

 { 
> 
> #include <windows.h> 
> #include <stdio.h> 
> 
> // This code will only work on the Windows 2000 platform 
> 
> BOOL IsTerminalServicesEnabled(void) 
> { 
>      OSVERSIONINFOEX osVersionInfo; 
>      DWORDLONG dwlConditionMask = 0; 
> 
>      ZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); 
>      osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); 
>      osVersionInfo.wSuiteMask = VER_SUITE_TERMINAL; 
> 
>      VER_SET_CONDITION( dwlConditionMask, VER_SUITENAME, VER_AND ); 
> 
>      return VerifyVersionInfo( 
>          &osVersionInfo, 
>          VER_SUITENAME, 
>          dwlConditionMask 
>          ); 
> 
}

 type
   OSVERSIONINFOEX = packed record
     dwOSVersionInfoSize: DWORD;
     dwMajorVersion: DWORD;
     dwMinorVersion: DWORD;
     dwBuildNumber: DWORD;
     dwPlatformId: DWORD;
     szCSDVersion: array[0..127] of Char;
     wServicePackMajor: WORD;
     wServicePackMinor: WORD;
     wSuiteMask: WORD;
     wProductType: BYTE;
     wReserved: BYTE;
   end;
   TOSVersionInfoEx = OSVERSIONINFOEX;
   POSVersionInfoEx = ^TOSVersionInfoEx;

 const
   VER_SUITE_TERMINAL = $00000010;
   VER_SUITENAME = $00000040;
   VER_AND = 6;

 function VerSetConditionMask(
   ConditionMask: int64;
   TypeMask: DWORD;
   Condition: Byte
   ): int64; stdcall; external kernel32;

 function VerifyVersionInfo(
   var VersionInformation: OSVERSIONINFOEX;
   dwTypeMask: DWORD;
   dwlConditionMask: int64
   ): BOOL; stdcall; external kernel32 name 'VerifyVersionInfoA';


 function IsTerminalServicesEnabled: Boolean;
 var
   osVersionInfo: OSVERSIONINFOEX;
   dwlConditionMask: int64;
 begin
   FillChar(osVersionInfo, SizeOf(osVersionInfo), 0);
   osVersionInfo.dwOSVersionInfoSize := sizeof(osVersionInfo);
   osVersionInfo.wSuiteMask := VER_SUITE_TERMINAL;
   dwlConditionMask := 0;
   dwlConditionMask :=
     VerSetConditionMask(dwlConditionMask,
     VER_SUITENAME,
     VER_AND);
   Result := VerifyVersionInfo(
     osVersionInfo,
     VER_SUITENAME,
     dwlConditionMask);
 end;

 { 
  But heed the warning in the C sample: the functions used here are not 
  available on Win 9x and NT 4! If you use external declarations as above 
  your program would not even load on such a platform. 
}







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте