Überprüfen ob Programm / Prozess läuft
-
Tjo. stimmt HumeSikkins. Ist eigentlich das gleiche...

-
/\
||
||
||
||
||
/ Da oben steht was...
-
Ja habs gerade gesehen. Vielen Danke, klappt prima

-
na dann iss jah gud o

-
hallo,
ich nutze diesen snippet auch um herauszufinden ob ein bestimmtes programm läuft. funzt prima! danke schonmal dafür

aber auf einige sachen kann ich mir keinen reim machen. evtl. könnte das mal jemand für mich entschlüsseln

wozu dient die typedef hier genau? das kapier ich überhaupt nicht

typedef BOOL (WINAPI *TH32_PROCESS) (HANDLE hSnapShot, LPPROCESSENTRY32 lppe);was genau wird hier deklariert, initialisiert und zugewiesen?
PROCESSENTRY32 pe32 = { 0 }; HANDLE hSnapshot = NULL; HINSTANCE hDll = LoadLibrary("kernel32.dll"); pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First"); pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next"); bool process_state = FALSE;für sonstige erklärung wär ich echt dankbar.
könnte ich auch etwas vom code abändern oder weglassen?? nutze kein c++ in dem programm sondern nur c und die winapi.
-
K 141 schrieb:
nutze kein c++ in dem programm sondern nur c und die winapi.
Das ist reines C...
K 141 schrieb:
was genau wird hier deklariert, initialisiert und zugewiesen?
PROCESSENTRY32 pe32 = { 0 }; HANDLE hSnapshot = NULL;Sowohl pe32 als auch hSnapshot werden mit 0 initialisiert.
HINSTANCE hDll = LoadLibrary("kernel32.dll"); pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First"); pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next"); bool process_state = FALSE;...dann wird die kernel32.dll geladen und die beiden benötigten Funktionen importiert...
-
Öhm, Kernel32.dll laden? Ich glaube, wenn du das nötig hast, dann dürfte dein Programm gar nicht erst starten.
-
Ich find's auch irgendwie unsinnig und würde die kernel32.lib direkt verlinken...
-
Vor allem er läd sie und prüft dann nicht, ob sie auch geladen wurde. Wenn schon dann bitte richtig überflüssig.

Der Cast:
if (hSnapshot != (HANDLE) -1)ist auch so eine Stilblüte.
Warum nicht die Konstante INVALID_HANDLE_VALUE nehmen?
-
Hepi schrieb:
Ich find's auch irgendwie unsinnig und würde die kernel32.lib direkt verlinken...
Das macht er doch auch. Schau mal zwei Zeilen weiter:
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);Damit ist dann nicht nur das Laden überflüssig, sondern auch die GetProcAddress-Aufrufe. Außerdem fehlt der Aufruf von FreeLibrary.

-
öhm
using namespace std;ist reines C ja? :p kenn das nur aus C++
-
LOL. Immer wieder lustig.
-
if(fopen("test.exe","a")==NULL)
{
//Programm ist gestartet
}Ist doch einfacher, oder?
Weil, wenn die Datei gestartet ist, kann man nichts an sie anhängen. Deshalb funktioniert das auch.
*gg*mfG
h