Hallo,
Ich habe eine mir zwei Funktion zusammengesucht, leider eine dieser 2 beim zweiten Aufruf löst Windows eine Haltepunkt aus, was beim starten ohne Debugger das bekannte „Problembericht senden“ Fenster anzeigen lässt.
Der Code der ersten Funktion:
int GetProcess(Prozess \*Prozesse, int Max)
{
PROCESSENTRY32 pe32 = { 0 };
HANDLE hSnapshot = NULL;
HINSTANCE hDll = LoadLibrary("kernel32.dll");
pProcess32First=(TH32\_PROCESS)GetProcAddress(hDll,"Process32First");
pProcess32Next=(TH32\_PROCESS)GetProcAddress(hDll,"Process32Next");
hSnapshot = CreateToolhelp32Snapshot(TH32CS\_SNAPPROCESS,0);
int proc\_cnt=0,thrd\_cnt=0;
if(Max == 0)
{
if (hSnapshot != (HANDLE) -1)
{
pe32.dwSize = sizeof (PROCESSENTRY32);
if (pProcess32First (hSnapshot, &pe32))
{
do
{
proc\_cnt++;
}
while(pProcess32Next (hSnapshot, &pe32));
}
CloseHandle (hSnapshot);
}
return proc\_cnt;
}
else
{
if (hSnapshot != (HANDLE) -1)
{
pe32.dwSize = sizeof (PROCESSENTRY32);
int proc\_cnt=0,thrd\_cnt=0;
if (pProcess32First (hSnapshot, &pe32))
{
do
{
proc\_cnt++;
sprintf(Prozesse[proc\_cnt].Name, "%s\0", pe32.szExeFile);
Prozesse[proc\_cnt].Process = ::open\_mouth:penProcess(PROCESS\_TERMINATE, 0, pe32.th32ProcessID);
Prozesse[proc\_cnt].ID = proc\_cnt;
Prozesse[proc\_cnt].LengthName = strlen(Prozesse[proc\_cnt].Name);
cout
und die Zweite:
bool SendProcess(int socket)
{
Prozess \*Prozesse=0;
int size=0;
int rec=0;
void \*Buffer=malloc(sizeof(int));
int Anzahl = GetProcess(NULL, 0);
int buf=0;
char \*cBuffer=(char\*)malloc(sizeof(char)\*256);
if(Anzahl \> 0)
{
size = Anzahl\*sizeof(Prozess);
cout
Hoffe mir kann jemand helfen, den ich kapiert nicht was da nicht funktioniert.
Gruß Michael