Task листата и Visual C++
5 отговора
208 прегледа
Task листата и Visual C++
Как мога да скрия порцес от стандартната task листа на Windows 98, чрез Visual C++? Възможно ли е скриване от process листата на Win2000?
Re: Task листата и Visual C++
Доколкото разбирам искаш да скриеш приложенито така че да не се появява при натискане на CTRL+ALT+DEL. Ако е така решението е със API функцията:
"RegisterServiceProcess".
Тази функция се намира в "kernel32.dll".
За да скриеш приложението я ивикай с първи параметър NULL и втори 1.
Ако искаш отново да го регистрираш извикай
функцията с първи параметър 1 и втори NULL.
Не знам дали това работи в Win2000, но нищо не ти пречи да пробваш.
Pozdravi ot Bourgas.
"RegisterServiceProcess".
Тази функция се намира в "kernel32.dll".
За да скриеш приложението я ивикай с първи параметър NULL и втори 1.
Ако искаш отново да го регистрираш извикай
функцията с първи параметър 1 и втори NULL.
Не знам дали това работи в Win2000, но нищо не ти пречи да пробваш.
Pozdravi ot Bourgas.
Re: Task листата и Visual C++
дава
run-time error:
chkesp.c , line 42
указатели с различни calling conventions.
??
run-time error:
chkesp.c , line 42
указатели с различни calling conventions.
??
Re: Task листата и Visual C++
RegisterServiceProcess
The RegisterServiceProcess function registers or unregisters a service process. A service process continues to run after the user logs off.
To call RegisterServiceProcess, retrieve a function pointer using GetProcAddress on KERNEL32.DLL. Use the function pointer to call RegisterServiceProcess.
DWORD RegisterServiceProcess(
DWORD dwProcessId,
DWORD dwType
);
Parameters
dwProcessId
Specifies the identifier of the process to register as a service process. Specifies NULL to register the current process.
dwType
Specifies whether the service is to be registered or unregistered. This parameter can be one of the following values. Value Meaning
0 Unregisters the process as a service process.
1 Registers the process as a service process.
Return Value
The return value is 1 if successful or 0 if an error occurs.
The RegisterServiceProcess function registers or unregisters a service process. A service process continues to run after the user logs off.
To call RegisterServiceProcess, retrieve a function pointer using GetProcAddress on KERNEL32.DLL. Use the function pointer to call RegisterServiceProcess.
DWORD RegisterServiceProcess(
DWORD dwProcessId,
DWORD dwType
);
Parameters
dwProcessId
Specifies the identifier of the process to register as a service process. Specifies NULL to register the current process.
dwType
Specifies whether the service is to be registered or unregistered. This parameter can be one of the following values. Value Meaning
0 Unregisters the process as a service process.
1 Registers the process as a service process.
Return Value
The return value is 1 if successful or 0 if an error occurs.
Re: Task листата и Visual C++
Daite parametri na tazi funkciq za da moga da q importna ot dll-kata,pls!
Re: Task листата и Visual C++
Това е примерна функция за използване на "RegisterServiceProcess"
Моля да ме извиниш ако коментарите са прекалено много.
void OnHide()
{
/* Hiding the application in the taskmanager*/
//Дефинирам тип на адреса на следната функция
//DWORD CALLBACK LPFNDLLFUNC1(DWORD,DWORD);
typedef DWORD (CALLBACK* LPFNDLLFUNC1)(DWORD,DWORD);
//Инстанция на DLL
HINSTANCE hDLL;
//Декларирам променлива от дефинирания горе тип
LPFNDLLFUNC1 lpfnDllFunc1;
//Зарежда инстанцията на kernel32.dll
hDLL = LoadLibrary("kernel32");
//Проверява дали имаме валиден указател към kernel32.dll
if (hDLL != NULL)
{
//Ако адреса е валиден
//Присвоявам на lpfnDllFunc1 адреса на финкцията
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,"RegisterServiceProcess");
//Проверява дали адреса е невалиден и ако
//е така освобождава инстанцията на
//заредената библиотека
if (!lpfnDllFunc1)
{
FreeLibrary(hDLL);
}
else
{
//Ако всичко е наред унрегистрира
//текущата инстанция на приложението
//от RegisterServiceProcess за да
//скрие приложвнието
lpfnDllFunc1(NULL, 1);
}
}
//Oсвобождава инстанцията на заредената библиотека
FreeLibrary(hDLL);
}
Pozdravi ot Bourgas.
Моля да ме извиниш ако коментарите са прекалено много.
void OnHide()
{
/* Hiding the application in the taskmanager*/
//Дефинирам тип на адреса на следната функция
//DWORD CALLBACK LPFNDLLFUNC1(DWORD,DWORD);
typedef DWORD (CALLBACK* LPFNDLLFUNC1)(DWORD,DWORD);
//Инстанция на DLL
HINSTANCE hDLL;
//Декларирам променлива от дефинирания горе тип
LPFNDLLFUNC1 lpfnDllFunc1;
//Зарежда инстанцията на kernel32.dll
hDLL = LoadLibrary("kernel32");
//Проверява дали имаме валиден указател към kernel32.dll
if (hDLL != NULL)
{
//Ако адреса е валиден
//Присвоявам на lpfnDllFunc1 адреса на финкцията
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,"RegisterServiceProcess");
//Проверява дали адреса е невалиден и ако
//е така освобождава инстанцията на
//заредената библиотека
if (!lpfnDllFunc1)
{
FreeLibrary(hDLL);
}
else
{
//Ако всичко е наред унрегистрира
//текущата инстанция на приложението
//от RegisterServiceProcess за да
//скрие приложвнието
lpfnDllFunc1(NULL, 1);
}
}
//Oсвобождава инстанцията на заредената библиотека
FreeLibrary(hDLL);
}
Pozdravi ot Bourgas.