Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Zabezpieczenie procesu przed zamknięciem (taskmgr.exe)


Rekomendowane odpowiedzi

Opublikowano

Witam!

 

Tworzę program dla pracowni informatycznej (coś ala Opiekun Ucznia) i mam pytanie.

Otóż w drodze do sukcesu potrzebne mi jest zabezpieczenie procesu przed zamknięciem w taskmgr, np. jak w antywirusie Avast!, jak można stworzyć takie zabezpieczenie?

 

Dziękuję, pozdrawiam.

screenshot_10.jpg


Opublikowano

int getprocess(char* target)
{
	PROCESSENTRY32 entry;
	entry.dwSize = sizeof(PROCESSENTRY32);
	
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
	//puts("start getprocess");
	//Sleep(500);

		if (Process32First(snapshot, &entry) == TRUE)
		{
			//puts("proc32first");
			//Sleep(500);
			while (Process32Next(snapshot, &entry) == TRUE)
			{
				//puts("proc32next");
				//Sleep(100);
				if (strcmp(entry.szExeFile, target) == 0)
				{
						//printf("znaleziono proces\nPID: %i\n", entry.th32ProcessID);
						//getch();
					HANDLE hproc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, entry.th32ProcessID);
					DWORD code;
					GetExitCodeProcess(hproc, &code);

					//printf("pobrano exitcode: %i\n", code);
					//getch();

					while (code == STILL_ACTIVE)
					{
						//puts("proces aktywny");
						Sleep(300);
						GetExitCodeProcess(hproc, &code);
					}

					//printf("proces zamkniety, exitcode: %i\n", code);
					//getch();
					ShellExecute(NULL, NULL, "twoja_sciezka", NULL, NULL, SW_SHOW);
					CloseHandle(hproc);
					//printf("uruchomiono proces\n sciezka: %s\n", target);
					//getch();
				}
			}
		}

	CloseHandle(snapshot);
	return 0;
}
Trochę zmodyfikowana na moje potrzeby funkcja wyszukująca proces po jego nazwie, a następnie sprawdzająca czy istnieje. Jako target podaj nazwę twojego procesu, i w ShellExecute podaj ścieżkę do twojego programu i voila.

 

Mało to efektywne, ale działa. Wada jest taka, że i tak możesz wyłączyć program ale on od nowa się uruchomi.

846331404756772371599.jpeg

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...