Автор
|
Тема: Hidden Process
|
Eugene Yavorsky |
опубликован 14-10-2000 22:54 MSK
Как создать окно, которое не было бы видно в списке по Ctrl+Alt+Del, но тем не менее существовало и получало сообщения (например, от иконки в системном трее). Как-то это люди делают (например, AVP Monitor имеет до черта разных окон, иконку в трее, прекрасно получает сообщения - но по трем пальцам не виден). Просто ShowWindow(SW_HIDE) не помогает. А, самое главное: желательно, чтобы эта фича могла бы производиться с MFC - приложением.
|
Irokez
|
опубликован 15-10-2000 19:50 MSK
Есть недокументированная функция Winbows - котороя импортируется из Kernel32.dll, которая позволяет делать процесс системным, причем сообшения вполне приходят. :) Пиши: Irokez@tut.by |
BadHabit
|
опубликован 03-11-2000 12:41 MSK
#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
Сорри, что имя уже другое, опять забыл пароль. Всем спасибо, но в обоих ответах hKernel=LoadLibrary("KERNEL32.DLL"); - это лишнее. Раз мы вызываем GetProcAdress, значит мы, скорее всего, слинковали прогу с KERNEL32.LIB и библиотека уже подключена. Так что для простоты вызываем GetProcess("KERNEL32.DLL") - и не нужно помнить про FreeLibrary. |