Страница: 1 |
`в модуле Option Explicit Private Declare Function RegisterServiceProcess Lib "kernel32.dll" _ (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long `на форме Private Sub Form_Load() Call RegisterServiceProcess(GetCurrentProcessId, 1) End Sub `Аплодисменты! Всем спасибо ` by cooller `Аплодисменты! Всем спасибо ` by cooller да уж... ( ответил... человек про 2000 винду спросил. А как в мастдайке это сделать все знают. гм..., недоответил 2Atma а как в Win2k и прочих NT_шных форточках - народ не знает (или не говорит). По крайней мере ни кто ещё, ни разу не сказал. ( Нужно думать не о том как ее спрятать (это по моему не возможно, ) а о том как запретить терминатить ее... Или проще: В From_Unload (QueryUnload) ставь Cancel=1 Или: Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Select Case UnloadMode Case vbFormControlMenu MsgBox "Выгрузка формы из системного меню или кнопкой Х." Case vbFormCode MsgBox "Выгрузка из кода." Case vbAppWindows MsgBox "Windows заканчивает свою работу." Case vbAppTaskManager MsgBox "Выгрузка из менеджера задач." Case vbFormMDIForm MsgBox "Выгружается MDI форма." End Select End Sub А дальше уже идет твоя фантазия в работу... "Чуваки, говорю еще раз, но уже в этот топик - если вам надо пример установки приоритета System на вашу прогу - мыльте. Исходники на VB 6" Скиньте мне, плиз: enstain@yandex.ru Страница: 1 |
Вопрос: Помогите спрятать прогу от win2000
Добавлено: 26.11.03 18:47
Автор вопроса: Atma | ICQ: 161504457
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Cooller
Вопросов: 10
Ответов: 28
Профиль | | #1
Добавлено: 27.11.03 07:03
Номер ответа: 2
Автор ответа:
Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #2
Добавлено: 27.11.03 07:22
Номер ответа: 3
Автор ответа:
Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #3
Добавлено: 27.11.03 07:34
Номер ответа: 4
Автор ответа:
Atma
ICQ: 161504457
Вопросов: 33
Ответов: 14
Профиль | | #4
Добавлено: 27.11.03 12:35
Ж (достаточно элегантно, не находишь)
BOOL CRemThreadInjector::DoInjectModuleInto(CExeModuleInstance *pProcess)
{
BOOL bResult = FALSE;
HANDLE hProcess = NULL;
HANDLE hThread = NULL;
PSTR pszLibFileRemote = NULL;
__try
{
if (TRUE == IsWindows9x())
__leave;
if (NULL == pProcess)
__leave;
char szLibFile[MAX_PATH];
::GetModuleFileNameA(
ModuleFromAddress(GetMsgProc),
szLibFile,
MAX_PATH
);
BOOL bFound = FALSE;
CModuleInstance* pModuleInstance;
for (long i = 0; i < pProcess->GetModuleCount(); i++)
{
pModuleInstance = pProcess->GetModuleByIndex(i);
if ( 0 == stricmp(pModuleInstance->Get_Name(), szLibFile) )
{
bFound = TRUE;
break;
} // if
} // for
if (bFound)
__leave;
// Get a handle for the process we want to inject into
hProcess = ::OpenProcess(
PROCESS_ALL_ACCESS, // Specifies all possible access flags
FALSE,
pProcess->Get_ProcessId()
);
if (hProcess == NULL)
__leave;
// Calculate the number of bytes needed for the DLL's pathname
int cch = 1 + strlen(szLibFile);
// Allocate space in the remote process for the pathname
pszLibFileRemote = (PSTR)::VirtualAllocEx(
hProcess,
NULL,
cch,
MEM_COMMIT,
PAGE_READWRITE
);
if (pszLibFileRemote == NULL)
__leave;
// Copy the DLL's pathname to the remote process's address space
if (!::WriteProcessMemory(
hProcess,
(PVOID)pszLibFileRemote,
(PVOID)szLibFile,
cch,
NULL))
__leave;
// Get the real address of LoadLibraryW in Kernel32.dll
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
::GetProcAddress(::GetModuleHandle("Kernel32"), "LoadLibraryA");
if (pfnThreadRtn == NULL)
__leave;
// Create a remote thread that calls LoadLibraryW(DLLPathname)
hThread = ::CreateRemoteThread(
hProcess,
NULL,
0,
pfnThreadRtn,
(PVOID)pszLibFileRemote,
0,
NULL
);
if (hThread == NULL)
__leave;
// Wait for the remote thread to terminate
::WaitForSingleObject(hThread, INFINITE);
bResult = TRUE;
}
__finally
{
// Free the remote memory that contained the DLL's pathname
if (pszLibFileRemote != NULL)
::VirtualFreeEx(hProcess, (PVOID)pszLibFileRemote, 0, MEM_RELEASE);
if (hThread != NULL)
::CloseHandle(hThread);
if (hProcess != NULL)
::CloseHandle(hProcess);
}
return bResult;
}
Номер ответа: 5
Автор ответа:
Atma
ICQ: 161504457
Вопросов: 33
Ответов: 14
Профиль | | #5
Добавлено: 27.11.03 12:50
Номер ответа: 6
Автор ответа:
Atma
ICQ: 161504457
Вопросов: 33
Ответов: 14
Профиль | | #6
Добавлено: 27.11.03 15:51
Номер ответа: 7
Автор ответа:
bold
ICQ: 317091709
Вопросов: 0
Ответов: 2
Профиль | | #7
Добавлено: 05.12.03 19:59
Номер ответа: 8
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #8
Добавлено: 06.12.03 08:04
Чуваки, говорю еще раз, но уже в этот топик - если вам надо пример установки приоритета System на вашу прогу - мыльте. Исходники на VB 6
Номер ответа: 9
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #9
Добавлено: 06.12.03 08:55
Номер ответа: 10
Автор ответа:
Enstain
Вопросов: 6
Ответов: 6
Профиль | | #10
Добавлено: 07.12.03 11:48