WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Hidden Process

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Hidden Process
Eugene Yavorsky опубликован 14-10-2000 22:54 MSK   Click Here to See the Profile for Eugene Yavorsky   Click Here to Email Eugene Yavorsky  
Как создать окно, которое не было бы видно в списке по Ctrl+Alt+Del, но
тем не менее существовало и получало сообщения (например, от иконки в
системном трее). Как-то это люди делают (например, AVP Monitor имеет до
черта разных окон, иконку в трее, прекрасно получает сообщения - но по трем
пальцам не виден). Просто ShowWindow(SW_HIDE) не помогает. А, самое главное:
желательно, чтобы эта фича могла бы производиться с MFC - приложением.
Irokez опубликован 15-10-2000 19:50 MSK     Click Here to See the Profile for Irokez  Click Here to Email Irokez     
Есть недокументированная функция Winbows - котороя импортируется из Kernel32.dll, которая позволяет делать процесс системным, причем сообшения вполне приходят. :)
Пиши: Irokez@tut.by
BadHabit опубликован 03-11-2000 12:41 MSK     Click Here to See the Profile for BadHabit  Click Here to Email BadHabit     
#include <iostream.h>
#include <windows.h>

BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType);

int main(){

HINSTANCE hKernel;
int i=1;
hKernel=LoadLibrary("KERNEL32.DLL");

if(hKernel){
cout<<"Success load library kernel32.dll"<< endl;
RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))GetProcAddress(hKernel,"RegisterServiceProcess");
if(RegisterServiceProcess){
cout<<"Success to have address of the specified exported dynamic-link library (DLL) function"<< endl;
if(RegisterServiceProcess(GetCurrentProcessId(),i))
cout<<"Success registers the process as a service process"<< endl;
}else{
cout<<"Failed to have address of the specified exported dynamic-link library (DLL) function"<< endl;
cin>>i;
return 0;
}
}else{
cout<<"Failed load library kernel32.dll"<< endl;
cin>>i;
return 0;
}
cout<<"Registers the process as a service process:1"<< endl;
cout<<"Unregisters the process as a service process:0"<< endl;
cin>>i;
if (RegisterServiceProcess(GetCurrentProcessId(),i)){
cout<<"Success"<< endl;
}else{
cout<<"Failed"<< endl;
}
cin>>i;
return 0;
}


====================
Пример для работы с ф-ей RegisterServiceProcess.

Eugene_Yavorsky1 опубликован 20-11-2000 15:41 MSK     Click Here to See the Profile for Eugene_Yavorsky1  Click Here to Email Eugene_Yavorsky1     
Сорри, что имя уже другое, опять забыл пароль.
Всем спасибо, но в обоих ответах hKernel=LoadLibrary("KERNEL32.DLL"); - это лишнее. Раз мы вызываем GetProcAdress, значит мы, скорее всего, слинковали прогу с
KERNEL32.LIB и библиотека уже подключена. Так что для простоты вызываем GetProcess("KERNEL32.DLL") - и не нужно помнить про FreeLibrary.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.