programme ausschalten



  • tach leute

    ich wollte gestern ein programm schreiben das überprüft ob eine internetverbindung besteht und wenn das der fall ist einige programme startet
    das ist noch nicht das problem aber ich möchte die programme auch wieder ausschalten wenn ich offline geh und jetz wirds haarig^^

    also vielleicht ist gerade einer da der mir sagen kann obs e funktion giebt mit der man ein programm wieder ausschalten kann

    danke schon mal im forraus

    mfg N3R0

    ps. rechtschreibfehler sind absicht^^



  • Schau mal in die FAQ nach Programme beenden, die mit ShellExecute gestartet wurden.



  • danke habe gerade die faq durchgelesen
    jetz weis ich zwar wie man einen mausklick simmuliert aber der shellexecute threat bringt mir nix weil ich das programm mit der execve() funktion starte
    (ich will so wenig api wie möglich verwenden^^) und auserdem wenn ich mal ein programm nicht selber gestartet hab bin ich aufgeschmissen
    vielleicht hast du noch einen anderen vorschlag ich bin für alles offen auser für: "drück rechts oben aufs x"^^

    mfg N3R0



  • hi,

    also mittels api koenntest du das fenster suchen und dem fenster ein WM_DESTROY oder aehnliches schicken, sozusagen ein ALT+F4.

    Gruss
    msp



  • danke das ist schon mal gut aber woher kriege ich windowname und classname

    giebts nix wo ich nur den namen abgebem muss und das is weg???^^

    mfg N3R0



  • Also wenn du es sehr einfach haben willst, hole die zu schliessenden Fenster in Vordergrund.

    Und simuliere denn ALT+F4.

    Zwar unschöne Lösung, aber einfach.



  • giebts sonst keine möglichkeit??
    wenn mir einer sagen könnte wei ich von einem laufenden programm das handle oder die id krieg wär ich auch schon happy!!!^^

    mfg N3R0



  • FindWindow(Ex) - den Fensternamen siehst du ja in der Titelleiste, den Namen der Fensterklasse kannst du mit Spy++ oder WinSpector ausfindig machen 🙂



  • N3R0 schrieb:

    wenn mir einer sagen könnte wei ich von einem laufenden programm das handle oder die id krieg wär ich auch schon happy!!!^^

    Benutz CreateProcess zum Starten.



  • ok danke dann mal ich hab zwar keinen τ wie ichs jetz machen soll aber ich werds schon irgendwie hinkriegen *muahahahahaaaa*

    danke an alle

    mfg N3R0



  • FindWindow("Festertitel"), dann mit SendMessage() und WM_DESTROY oder mit DestroyWindow() das Fenster vernichten, was in der Regel auch das komplette Programm mit schließt sonnst mal als Nachricht WM_CLOSE benutzen



  • was is wenn das prog kein fenster hat???

    mfg N3R0



  • geht nicht, es braucht ja irgendeine msg-proc. deshalt muss es ein (ev. unsichtbares) fenster haben
    (lass mich aber auch korrigieren..)



  • Dann bleibt wohl nur noch TerminateProcess.

    MfG.



  • Es ist möglich das Programme kein Fenster haben, die haben dann auch keine WndProc.

    z.B. Irgendwelche Server die im Hintergrund laufen (ich meine nicht die Dienste!!!)



  • SDtarte das Programm mit CreateProcess oder ShellexecuteEx und du bekommst eine ProcessID zurück, mit der du das Programm mit TreminateProcess abschießen kannst. Aber vorsicht es werden nicht alle Ressourcen freigegeben!



  • PostThreadMessage( prozess , WM_QUIT , 0 , 0);
    sollte auch Programme ohne Fenster 'sauber' beenden



  • Lui Progs ohne Fenster haben keinen MessageLoop, denn brauchtst kriegst du nur indem du ein Fenster erstellst.



  • Sie können aber durchaus eine besitzen, um eben Nachrichten von anderen Prozessen erhalten zu können 😉


Log in to reply