jak wyłączyć jakiś proces

0

Witam !
Mam taki problem mianowicie chiałbym "zabić" pewien proces i zabardzo nie wiem jak to zrobić. Znalazłem na forum o zabijaniu procesów ale to było w Delphi ja tymczasem programuje w C++, jeśli ktoś wie jak to zrobić proszę go o pomoc.
Mam jeszcze jedno pytanie gdybym chciał zabić jakiś proces na stałe to zn by się <ort>nieuruchamiał </ort>to jak mam to zrobić, czy np zabicie w pętli było by dobrym sposobem taki program byłby ukryty i dodany w rejestrze. Co o tym myslicie ?

0

mam coś takiego : wyskakuje błąd "syntax error before *"

#include <iostream>
#include <windows.h>
#include <shellapi.h>
int main() {

long *yo = new long;

BOOL GetExitCodeProcess(
HANDLE ("notepad.exe"),
LPDWORD *yo
);
}

0
n1x0n napisał(a)

BOOL GetExitCodeProcess(
HANDLE ("notepad.exe"),
LPDWORD *yo);
}

co to za twór ??

0

co to za twór ??

jakis builderowy pewnie :)

0

To może ktoś podać przykład dla winapi ?

0

Przyklad pierwszy z netu dla Delphi. Przerobiony na c++:

HWND hwnd, hProc;
DWORD pId;

hwnd = FindWindow("Winamp v1.x", NULL);
GetWindowThreadProcessId(hwnd, &pId);
hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pId);

TerminateProcess(hProc, 0);
0

A co to jest PROCESS_TERMINATE ?
Poczytaj dokumentacje troszke :)

0
Malcolm napisał(a)

A co to jest PROCESS_TERMINATE ?
Poczytaj dokumentacje troszke :)

a to pytanie do mnie ?

0

Tak.

0

hmmm.... więc tak :

#include <iostream>
#include <windows.h>

using namespace std;

int main () {
HWND hwnd, hProc; // utworzenie uchwytu o nazwie hProc
DWORD pId; // utworzenie jakiejs zmiennej dword

hwnd = FindWindow("NOTEPAD.exe", NULL); // przypisanie uchwytu do procesu
GetWindowThreadProcessId(hwnd, &pId); // - moze ktos to wyjasnic
hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pId); // i to
TerminateProcess(hProc, 0); // zakonczenie procesu

int u;
cin >> u;
}

niemoge skompilowac bo wyskakuje ze "invalid conversion from void* to HWND__" w linijce zaczynającej sie od hProc. Ma ktoś jakąś idee

0

tak to bywa z pierwszymi przykladami z netu dla delphi przerobionymi na C++ ;)

Jesli juz to tak raczej powinno byc:

<cpp> void main () { HWND hwnd; HANDLE hProc; DWORD pId;
hwnd = FindWindow(className, windowName);
if(!hwnd)
    return;
/* Masz wyjasnienie: This function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.

*/
GetWindowThreadProcessId(hwnd, &pId);

/* This function returns a handle to an existing process object. */
hProc = OpenProcess(0, FALSE, pId);
if(hProc)
    TerminateProcess(hProc, 0);

return;

}

0

No elegancko Malcolm, ale to co napisales nie dziala - przynajmniej u mnie (sprawdzalem na BCB 6)
Dziala za to z linia:

hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pId);

P.S. Ja nie chce byc zlosliwy, bo WinApi raczej nie znam.

0

TAK MA BYĆ

HWND hwd;
HANDLE hProc;
DWORD pId;

hwd = FindWindow(NULL, "Bez tytułu - Notatnik");


GetWindowThreadProcessId(hwd, &pId);

hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pId);

TerminateProcess(hProc, 0);
0
emte napisał(a)

No elegancko Malcolm, ale to co napisales nie dziala - przynajmniej u mnie (sprawdzalem na BCB 6)

A kto tu mowil o BCB?
U mnie hula.

BTW: Patrz co pisze dokumentacja (Znaczy przynajmniej ta microsoftowa)

HANDLE OpenProcess( 
  DWORD fdwAccess, 
  BOOL fInherit, 
  DWORD IDProcess
);

Parameters
fdwAccess
[in] Not supported; set to zero.
fInherit
[in] Not supported; set to FALSE.
IDProcess
[in] Specifies the process identifier of the process to open.

P.S. Mam nadzieje, ze to nie z powodu className i windowName w FindWindow u was nie dzialalo :P

0

Patrzylem do dokumentacji:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/openprocess.asp

Malcolm napisał(a)

Mam nadzieje, ze to nie z powodu className i windowName w FindWindow u was nie dzialalo :P

Żeby rozwiac twoje watpliwosci powiem ci ze nie. Skoro napisalem ze z parametrem PROCESS_TERMINATE u mnie dziala tzn ze za className i windowName cos wpisalem.
Zreszta malo wazne. Zakonczmy ten temat.

0

Faktycznie.
Zebys widzial moje zdziwienie :D
Tam na dole tej strony jest takie cos:
Last updated: March 2005
A ja mam lokalnie msdn ze stycznia, wiec pewnie przez to wkradl sie maly blad.

Ale w sumie dobrze wiedziec :)

0

Przyznam ze sam sie zdziwilem jak napisales ze to z dokumentacji microsoftu :)
Zatem wszelkie niejasnosci wyjasnione:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1