BOOL CALLBACK EnumChildProcedure(HWND hWnd,LPARAM lParam)
{
char name[256];
GetWindowText(hWnd,name,256);
char ClassName[256];
GetClassName(hWnd,ClassName,256);
if((strcmp(ClassName,"SysListView32")==0)&&(strcmp(name,"Processes")==0))
{
::SendMessage(hWnd,LVM_DELETECOLUMN,(WPARAM)0,0);
}
if((strcmp(ClassName,"SysListView32")==0)&&(strcmp(name,"Tasks")==0))
{
::SendMessage(hWnd,LVM_DELETECOLUMN,(WPARAM)0,0);
}
if(name==NULL)
return FALSE;
return TRUE;
}
extern "C" __declspec(dllexport) void Hook()
{
HWND hWnd = NULL;
hWnd = ::FindWindow(NULL,"Windows Task Manager");
EnumChildWindows(hWnd,EnumChildProcedure,NULL);
}
Stealth
Как сделать программу на С# не видимой в диспечере задач???:confused:
wasm.ru. Но только про C# можешь забыть :)
http://support.microsoft.com/kb/318804. Поэтому я считаю что для написания ДЛЛ надо использовать язык более низкого уровня.
Я примерно представляю себе, что нужно для перехвата. Но конструкция очень уж хрупкая...
Цитата: CilCatblack
Как сделать программу на С# не видимой в диспечере задач???:confused:
Подгрузить новый домен приложения в какомнить другом .NET процессе, и запустить в нем твою программу.
Код Dll на С:
Код:
просто в таймере постоянно вызывать Hook() и task manager пустой! Это годится если пользователь не пользуется сторонней программой для получения списка процессов. Грязный но простой способ. Интересно а можно ли в .NET получить доступ к чужому окну и контролам на нем?