![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CTRL+ALT+DEL и ALT+TAB [D6, Win95/98, WinXP]
Serega © (2003-03-25 18:19:00)Ув. мастера!!! Как сделать чтобы программа не была видна по ALT+TAB и CTRL+ALT+DEL.
Я делаю так:
...
function RegisterServiceProcess(ProcessID, Typ: Integer): Integer;
external "KERNEL32.DLL";
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessId, 1);
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW);
end;
...
но он говорит что:
"Точка входа в процедуру RegisterServiceProcess не найдена в
библиотеке DLL KERNEL32.dll"
Помогите!!!
NightAngel (2003-03-28 19:19:00) [1]>Успехов. Если много времени.
Подобными вещами, я не занимаюсь. Просто ответ на вопрос. Я в курсе, по поводу Hook-ов, а перехват это необязательно Hook (и не надо мне тонких намёков). Кому надо, тот сделает. Что касается времени... Сложность, понятие субъективное.
Игорь Шевченко (2003-03-26 10:13:00) [2]
> winXP требуется перехватить NtQuerySystemInformation для
> "процессной" невидимости и EnumWindows, EnumThreadWindows,
> EnumChildWindows для "оконной".
Успехов. Если много времени.
NightAngel (2003-03-25 22:42:00) [3]Этот код защищает только от нажатия ctrl-alt-del в w9x и ME. Любой просмотрщик процессов и окон немедленно обнаружит такой процесс. Чтобы этого не случилось, в WinXP требуется перехватить NtQuerySystemInformation для "процессной" невидимости и EnumWindows, EnumThreadWindows, EnumChildWindows для "оконной". Также, желательно было бы спрятать нечто "слушающее" на каком-либо TCP/UDP порту от команд типа "netstat -a".
NightAngel (2003-03-25 22:36:00) [4]Этот код защищает только от нажатия ctrl-alt-del в w9x и ME. Любой просмотрщик процессов и окон немедленно обнаружит такой процесс. Чтобы этого не случилось, в winXP требуется перехватить NtQuerySystemInformation для "процессной" невидимости и EnumWindows, EnumThreadWindows, EnumChildWindows для "оконной". Также, желательно было бы спрятать нечто "слушающее" на каком-либо TCP/UDP порту от команд типа "netstat -a".
Grinia (2003-03-25 22:30:00) [5]Экспортить надо для пущей уверенности по имени или по индексу (642).
У меня всё работает, правда если NT, то статически прилинкованная RegisterSe...ess вызовет ошибку настройки адресов в загрузчике ( в NT-шной Kernel такая радость отсутсвует ). Я загружаю всё динамически:
GetProcAddress(GetModuleHandle("..."),"...");
Есть ещё один способ, правда иногда не пашет, но попробовати можно :)
Application.Initialize;
SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
DVM (2003-03-25 20:44:00) [6]Вроде, если название проге дать пустой строкой, то ее видно не будет. Или заголовок формы пустой строкой оформить.
___ALex___ (2003-03-25 19:11:00) [7]такой способ работает только в виндах 9x