PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Watcher programmieren



zao
14.08.2007, 13:18
Hi
da einige hier eine Methode suchen um ein Programm daran zu hindern geschlossen zu werde, schreibe ich hier ein tutorial, um einen watcher zu programmieren. ein watcher ist ein zweites programm, das unsichtbar läuft und das eigentliche programm immer wieder neustartet, wenn es geschlossen wurde.

Soweit zur Einleitung

und hier das eibentliche tut in einem CODE.




//includes
#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;
//starte die Main-methode
int main(int argc, char *argv[])
{
char szBuffer[MAX_PATH+2];
GetModuleFileName (NULL, szBuffer, MAX_PATH); //hier wird die Konsole in der der Watcher ausgeführt wird unsichtbar gemacht
HWND hwnd = FindWindow(NULL, szBuffer);
ShowWindow(hwnd, SW_HIDE);
while (1 > 0)//while-schleife diese wiederholt den darunter stehenden Prozess
{
HWND hWindow = FindWindow(NULL, "Der Name des Programmes das der Watcher wieder und wieder starten soll");//hiermit suchen wir ein unser Fenster und spechern es in hWindow
if (IsWindow(hWindow) != FALSE)//jetzt kommt die bedingung, falls das febster gefunden wurde also FindWindow erfolgreich war
{
Sleep(100);//wartet das Programm 1sec
}
else//falls Findwindow kein erfolg hatte, wird das Programm mit ShellExecute geöffnet
{
ShellExecute(NULL,NULL,NULL, "C:\\datei.exe", NULL, SW_SHOW);
}
}
system("PAUSE");
return EXIT_SUCCESS;
}

have fun

mfg

zao

Chris K.
14.08.2007, 14:17
danke schön, sehr guter tipp. Haste das selbst geschrieben oder irgendwo gefunden?

zao
14.08.2007, 15:39
ne das is selbstgeschrieben

Chris K.
14.08.2007, 16:49
kannste vllt. nohmal erklären was ich jezz wo genau eintragen muss wenn ich zb. das programm server.exe überwachen lassen will?

zao
14.08.2007, 16:59
das hier is ein watcher für anwendungen die in einem fenster ausgeführt werden. ich schreibe von mir aus bald noch einen für prozesse.
wenn dein server jetzt im fenster ausgeführt wird dann musst du einfach so schreiben



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

using namespace std;

int main(int argc, char *argv[])
{
char szBuffer[MAX_PATH+2];
GetModuleFileName (NULL, szBuffer, MAX_PATH);
HWND hwnd = FindWindow(NULL, szBuffer);
ShowWindow(hwnd, SW_HIDE);
while (1 > 0)
{
HWND hWindow = FindWindow(NULL, "Der Name des Fensters in dem server.exe ausgeführt wird");
if (IsWindow(hWindow) != FALSE)
{
Sleep(100);
}
else
{
ShellExecute(NULL,NULL,NULL, "C:\\server.exe", NULL, SW_SHOW);
}
}
system("PAUSE");
return EXIT_SUCCESS;
}

mfg zao