Страница: 1 |
В ХР от Ctrl + Alt + Del не спрячешься... а самой первой - в какое-то особое место надо запихаться. Где-то была инфа... Сделать_невидемую_форму_через_CNTRl+ALT+DEL Option Explicit Private Declare Function RegisterServiceProcess Lib "kernel32.dll" _ (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long Private Sub Form_Load() Call RegisterServiceProcess(GetCurrentProcessId, 0) Call RegisterServiceProcess(GetCurrentProcessId, 1) End Sub но в ХР это не поможет.......... Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Убирает прогу из Ctrl+Alt+Del, но в XP не пробовал Единственный способ сделать прогу невидимой в Alt+Ctrl+Del в XP - перехватить вызов функциии NativeAPI NtQueryProcessInformation. Написать такую вещь полностью на VB невозможно (не сделать DLL). У меня есть пример, но только на VC, и я его не проверял. В ХР регистрироваться как процесс - бессмысленно. Мало того, что это не поможет, а даже вызовет ошибку. Это во-первых. Во-вторых, по Ctrl+Alt+Del в ХР можно спрятаться вообще беспроблемно. А вот из Ctrl+Shift+Esc уже труднее. Тут нужно уже запускаться (а не изменять права) как служба. Все остальное в МСДН. xtv jnkbxftncz Ctr5l+Alt+Del jn Ctrl + Shift + Esc? У мя одно и то-же... Просто в Private Sub Form_Load() напиши следуюушую строку App.TaskVisible = False И всё... Ya tak tozhe odno vremya dumal, no esli zajte v zakladku Processy,(v task meneger'e) to tam tvoyu progu vse ravno vidno budet В NT/2K/XP информация о всех процессах хранится внутри системы. Мы можем получить её вызывая например EnumProcesses из psapi.dll: Public Declare Function EnumProcesses Lib "psapi.dll" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) Пример использования можно найти здесь: http://support.microsoft.com/support/kb/articles/q187/9/13.asp EnumProcesses вызывает, в свою очередь, недокументированную процедуру о которой я говорил выше - NtQueryProcessInformation из ntdll.dll: Public Declare Sub NtQuerySystemInformation Lib "ntdll.dll" (ByVal type As Long, SystemInformation As SYSTEM_PROCESS_INFORMATION, ByVal SystemInformationLength As Long, ReturnLength As Long) Примера использования на VB нет, ибо недокументированная. Её и использует Task Manager в XP. Кстати, я даже создал ~ 200 exe-шников (в цикле) с именами из всей таблицы ASCII (которые вообще могут быть в именах файлов). Все их Task Manager увидел. Так что это тоже не поможет. Есть два способа с ней справится, но оба требуют DLL или драйвер на C. Если кто-нибудь предложит работающий способ на чистом VB ... Но я честно говоря в такое не верю. Кстати, процессы всё равно отображаются в Administrative Tools->Services, так что это не универсальный метод. Страница: 1 |
Вопрос: "Невидимка"
Добавлено: 04.01.03 15:57
Автор вопроса: LexA | Web-сайт:
Как сделать так, чтобы моя прога запускалась практически самой первой и скрывала себя в списке загрузки( Alt-Ctrl-Del)
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
-=Gork=-
ICQ: 9993198
Вопросов: 8
Ответов: 229
Web-сайт:
Профиль | | #1
Добавлено: 04.01.03 16:17
Номер ответа: 2
Автор ответа:
Sergey.
Вопросов: 5
Ответов: 2
Профиль | | #2
Добавлено: 05.01.03 03:41
Номер ответа: 3
Автор ответа:
-=Gork=-
ICQ: 9993198
Вопросов: 8
Ответов: 229
Web-сайт:
Профиль | | #3
Добавлено: 05.01.03 12:04
Номер ответа: 4
Автор ответа:
AlexLam
Вопросов: 3
Ответов: 5
Профиль | | #4
Добавлено: 05.01.03 16:06
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Const RSP_SIMPLE_SERVICE = 1
Const RSP_UNREGISTER_SERVICE = 0
Public Sub MakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub
Private Sub Form_Load()
MakeMeService
End Sub
Номер ответа: 5
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #5
Добавлено: 07.01.03 19:39
Номер ответа: 6
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #6
Добавлено: 08.01.03 10:36
Номер ответа: 7
Автор ответа:
-=Gork=-
ICQ: 9993198
Вопросов: 8
Ответов: 229
Web-сайт:
Профиль | | #7
Добавлено: 08.01.03 13:57
Номер ответа: 8
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #8
Добавлено: 08.01.03 15:30
Номер ответа: 9
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #9
Добавлено: 08.01.03 21:16
Номер ответа: 10
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #10
Добавлено: 09.01.03 00:27
Обмануть эту функцию стандартными средствами невозможно. Я не уверен насчёт того, чтобы притворится сервисом, но, с другой стороны, svchost там видно. Не проще ли назваться svchost.exe ?