Как "спрятать" программу в списке задач <Ctrl-Alt-Del>

Спрятать программу в списке задач <Ctrl-Alt-Del> можно только под Windows 95/98.  Делается это при помощи функции RegisterServiceProcess:

! Определить версию Windows
OVI:dwOSVersionInfoSize = Size(OVI)
if GetVersionEx( Address(OVI) ) = 0
  Message('Unable to determine Windows version','Error!')
else
  Case OVI:dwPlatformId
  of VER_PLATFORM_WIN32S
  g:OSType = 0
    ! Message('Unable to run under Win32s - get a real OS','Error!')
  of VER_PLATFORM_WIN32_WINDOWS
    g:OSType = 1
    g:WindowsPath = lower( GetRegistry( 'Software\Microsoft\Windows\CurrentVersion', 'SystemRoot', '', HKEY_LOCAL_MACHINE ) )
  of VER_PLATFORM_WIN32_NT
    if OVI:dwMajorVersion = 5
      g:OSType = 1 ! Windows 2000
    else
      g:OSType = 2 ! Windows NT
    .
    g:WindowsPath = lower( GetRegistry( 'Software\Microsoft\Windows NT\CurrentVersion', 'SystemRoot', '', HKEY_LOCAL_MACHINE ) )
  else
    Message('Unable to determine which version of Windows you have','Error!')
  .
.
! Зарегистрировать как сервис, только под Windows 9x
if  g:OSType = 1      ! Win9x
  loc:CurrentProcessId = GetCurrentProcessId()
  r# = RegisterServiceProcess( loc:CurrentProcessId, 1 )
.

After global includes:

! Информация о версии Windows:

VER_PLATFORM_WIN32_NT      EQUATE(2)
VER_PLATFORM_WIN32_WINDOWS EQUATE(1)
VER_PLATFORM_WIN32S        EQUATE(0)

OVI                    GROUP, pre( OVI )
OVI:dwOSVersionInfoSize  DWORD
OVI:dwMajorVersion       DWORD
OVI:dwMinorVersion       DWORD
OVI:dwBuildNumber        DWORD
OVI:dwPlatformId         DWORD
OVI:szCSDVersion         CHAR,DIM(128)
                       END

Прототипы функций Windows API:

GetVersionEx(LONG),name('GetVersionExA'),BOOL,PASCAL,PROC,RAW
RegisterServiceProcess( DWORD dwProcessId, DWORD dwType ), DWORD, RAW, Pascal
GetCurrentProcessId(), DWORD, RAW, Pascal
Hosted by uCoz