Спрятать программу в списке задач <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 )
.
! Информация о версии 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
GetVersionEx(LONG),name('GetVersionExA'),BOOL,PASCAL,PROC,RAW
RegisterServiceProcess( DWORD dwProcessId, DWORD dwType ), DWORD, RAW, Pascal
GetCurrentProcessId(), DWORD, RAW, Pascal