[C/C++] Nach Ausführung schließen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von trelker, 25. Februar 2007 .

  1. 25. Februar 2007
    Nach Ausführung schließen?

    Hi,
    hab ne systemspezifische Frage und zwar ich will wenn ich CSS starte dass sich Kaspersky schließt und wenn ich CSS schließe sich Kaspersky wieder öffnet.

    Weiß einer ob des möglich wäre, wenn ja wie?

    trelker
     
  2. 25. Februar 2007
    AW: Nach Ausführung schließen?

    Code:
    #include <stdio.h>
    #include <windows.h>
    
    int main( int argc, char ** argv )
    {
     HWND whCounterStrike = NULL;
     HWND whKaspersky = NULL;
    
     while(1)
     {
     whCounterStrike = FindWindow("hl2.exe", NULL); // Aendern wenn der Prozess anders heisst
     if(whCounterStrike != NULL)
     {
     whKaspersky = FindWindow("kaspersky.exe", NULL); // Aendern wenn der Prozess anders heisst
     if(whKaspersky != NULL)
     {
     DestroyWindow(whKaspersky);
     CloseHandle( whKaspersky );
     whKaspersky == NULL;
     }
     }
     else if( whCounterStrike == NULL )
     {
     whKaspersky = FindWindow("kaspersky.exe", NULL); // Aendern wenn der Prozess anders heisst
     if(whKaspersky == NULL)
     {
     system("Pfad/zu/Kaspersky.exe");
     }
    
     DestroyWindow(whKaspersky);
     }
     CloseHandle( whCounterStrike );
     whCounterStrike = NULL;
     }
    
     return EXIT_SUCCESS;
    }
    Hab keine Ahnung ob der Code funktioniert - bin gerade nicht unter Windows - aber
    er sollte hinhauen.

    Edit:
    Ich hab das DestroyWindow(whKaspersky); vergessen.
     
  3. 26. Februar 2007
    AW: Nach Ausführung schließen?

    warum per c/c++ und nicht per batchdatei? den laufenden prozess von kapersky kann man ja mit taskkill abschießen, dann steam starten etc.

    //edit
    go_steam.bat
    Code:
    @echo off
    echo Beende kapersky.exe...
    taskkill /f /im kapersky.exe
    echo Starte Steam...
    c:\programme\steam\steam.exe
    echo Starte Kapersky erneut...
    c:\programme\kapersky\kapersky.exe
    
    die batch-datei ist so lange offen, bis steam wirklich beendet wird.
     
  4. 26. Februar 2007
    AW: Nach Ausführung schließen?

    Weil er keine Sprache vorgegeben hat?

    Ich denke mal das er Kaspersky - wenn Steam selbst laeuft - anhaben will,
    man kann CSS ja auch ueber browser starten (oder?), aber da wuerds in Batch
    dann auch wieder net hinhauen, es sei denn du laesst den Browser solange offen :tongue:.
     
  5. 26. Februar 2007
    AW: Nach Ausführung schließen?

    im titel steht doch c/c++


    wie kommst du denn jetzt auf'n browser? und warum würd's mit batch nicht hinhauen?
     
  6. 26. Februar 2007
    AW: Nach Ausführung schließen?

    Mag sein.

    Du kannst Steam per Browser mitteilen das du Spiel X starten moechtest ;-).

    Weil du per Batch hoechstens Steam erreichst, und er will das beim Starten von Counter-Strike
    Kaspersky geschlossen wird.

    Wenn du mit Batch einen laufenden Prozess 'hl2.exe' findest, dann hab ich mich getaeuscht und ziehe diese Aussage zurueck .
     
  7. 26. Februar 2007
    AW: Nach Ausführung schließen?

    naja, wenn ich steam starte, will ich in der regel auch cs:s starten. ich bin von folgendem ausgegangen (so mach ich das):

    a) steam starten
    b) server im steam-fenster doppelklicken
    c) spiel startet

    wenn #1 konkreter wäre, müsste man nich mutmaßen und sich darüber auslassen, welcher weg bei welcher vorgehensweise besser ist.

    //edit
    taskkill /f /im hl2.exe - wenn erfolgreich, gab's den prozess bestimmt gibt's da auch irgendwelche kommandos, um lfd prozesse zu prüfen.
     
  8. 26. Februar 2007
    AW: Nach Ausführung schließen?

    Es gibt Leute die haben Steam auch einfach so an, oder zum chatten oder sonstwas.

    Und?

    Es interessiert hier aber nicht wie du das machst, er will lediglich das - wenn Counter-Strike gestartet wird - man den Prozess findet, ihn deaktiviert und dann ohne spielen kann.

    Er will ja nicht Half-Life abschiessen sondern Kaspersky, und das wenn Counter-Strike laeuft
     
  9. 26. Februar 2007
    AW: Nach Ausführung schließen?

    wusst nich dass das geht lol

    richtig, aber ich werd ja wohl noch erklären dürfen, was ich mache und warum mein weg zumindest bei mir funktioniert.
    auch richtig. aber nehmen wir mal obigen c/c++-code: wann soll der gestartet werden? wie?

    btw: das hat nix mit hartnäckig zu tun, wenn ich meine ansicht der dinge offenlege.
     
  10. 26. Februar 2007
    AW: Nach Ausführung schließen?

    [Pseudocode]
    Suche nach einem Prozess: hl2.exe
    wenn gefunden:
    _Suche nach Kaspersky.exe
    _wenn gefunden:
    __deaktivieren
    wenn nicht gefunden:
    _Suche nach Kaspersky.exe
    _wenn gefunden:
    __nichts, ist ja schon am laufen
    _wenn nicht gefunden:
    _starte Kaspersky
    [/Pseudocode]

    Das in eine while-Schleife und fertig.
     
  11. 26. Februar 2007
    AW: Nach Ausführung schließen?

    dann haste n programm, das die ganze zeit im hintergrund läuft (Suche nach einem Prozess: hl2.exe). das belastet das system durch die ständigen abfragen (je nach zeitabständen). wenn nicht (und du dieses programm startest, wenn du zocken möchtest), dann kann man genausogut kapersky manuell schließen. ma abwarten was #1 dazu sagt.
     
  12. 26. Februar 2007
    AW: Nach Ausführung schließen?

    Noe, tut es nicht.

    Du hast soeben gesagt, das wenn du einen IRC Clienten die ganze Zeit laufen lassen wuerdest dein System belastet wird. Das Programm das ich geschrieben hab ist um einiges kleiner als
    ein solcher Client.

    Ueberleg dir nochmal deine Aussage .
     
  13. 26. Februar 2007
    AW: Nach Ausführung schließen?

    jeder prozess, der auf einem system läuft, belastet es. obs ein virenscanner, ein chat-client oder ein dateimanager ist, ist egal. wie stark nun genau ist ne andere sache, deswegen ja die einbeziehung der zeitabstände.
     
  14. 26. Februar 2007
    AW: Nach Ausführung schließen?

    Sicher tut er das, du weisst aber ganz genau wie ich das gemeint habe.

    Mein Prozess belastet das System mit sicherheit nicht dermassen das es vor die Hunde geht.
    Die paar KB wird es wohl wegstecken.

    PS: Ende der Diskussion, kommt nix bei rum.

    Edit:
    Gerade mal per `ps -e u | grep "<nickname>" | wc -l` geguckt wieviel
    Prozesse laufen und wieviel Speicher genutzt wird (`free -m -t`):

    25 Prozesse
    Speicher: (Insgesamt)1841 | (Genutzt)590 | (Frei)1250

    Jetzt noch die Programme vom System und die restlichen vergessen und sich dazu denken
    wieviel ich ( als User ) verbrauche, dann kommen um die 200 MB (hoechstens) als User raus.
     
  15. 26. Februar 2007
    AW: Nach Ausführung schließen?

    1. FindWindow. Du kannst nicht als classname den Prozessnamen angeben.
    2.
    Code:
    whKaspersky == NULL;
    Du vergleichst Kaspersky mit 0. Selbst wenn es nur ein Gleichheitszeichen waere, waere das ueberfluessig, da das Handle bereits geschlossen ist.
    3.
    Code:
    CloseHandle( whCounterStrike );
    Du kannst das Handle nur closen, wenn es ueberhaupt offen ist. Also != 0
    4.
    Code:
    whCounterStrike = NULL;
    Auch ueberfluessig..
     
  16. 26. Februar 2007
    AW: Nach Ausführung schließen?

    1. Ja, es stimmt net.
    2. Ja, da ist mir halt ein Fehler unterlaufen.
    btw: Niemals NULL mit 0 vergleichen
    3. Passiert aber auch nichts wenn es nicht gefunden wurde, ist hier zwar nicht elegant gemacht worden..
    4. s.o.

    PS: Ich kann es schlecht ueberpruefen da ich schon lange nichts mehr mit Windows am hut hab..
     
  17. 26. Februar 2007
    AW: Nach Ausführung schließen?

    So habt erstma beide ne Bewertung ^^

    Hätte nicht gedacht dass es möglich ist.

    So nun schildere ich es nochmal wie es ablaufen soll:

    Kaspersky (cli.exe) soll nur dann geschlossen werden wenn ich Counterstrike Source spiele oder Counterstrike 1.6 (weil es einfach Saft zieht)

    aber

    es soll wieder gestartet werden WENN Counterstrike Source oder CS 1.6 geschlossen wird!!!

    Und Sprache C++ hab ich nur genommen weil ich kA hab mit welcher Sprache das geht also im Prinzip habe ich geraten

    Und wo muss ich dann die Codes einfügen und welcher Code ist richtig?
     
  18. 26. Februar 2007
    AW: Nach Ausführung schließen?

    2. Nicht? Na dann sieh dir mal bei Gelegenheit die windef.h an. Besonders den Abschnitt:
    Code:
    #ifndef NULL
    #ifdef __cplusplus
    #define NULL 0
    #else
    #define NULL ((void *)0)
    #endif
    #endif
     
  19. 26. Februar 2007
    AW: Nach Ausführung schließen?

    1. Wer redet von Windows?
    2. Genau, schau ihn dir nochmal an ;-).
     
  20. 27. Februar 2007
    AW: Nach Ausführung schließen?

    Hallo, möchte hier keinen Streit vom Zaun brechen, nur mal was klarstellen in bezug auf folgendes Zitat:

    Die größe eines Programmes hat NICHTS mit dessen Belastung auf das System das System zu tun.
    In deinem Algorithmus gehst du von einer while(1)-schleife aus, d.h. in einem Multitasking-Betriebssystem wie WinXP wird dieser Prozess je nach priorität(standard:normal) abwechselnd mit den anderen prozessen im taskmanager aufgerufen, der umstand, dass es sich um eine endlosschleife ohne zeitunterbrechung (schlafenlegen des threads in intervall) handelt, wird der prozi unnötig belastet, da in dem fall steam und das prog in jedem cpu-zyklus wechseln müssen.
    Viele DOS(!denial of service!)-viren, welche auch nur ein paar kb groß sind, sind darauf aufgebaut, das system so zu schreddern, indem sie sich selbst immer wieder neustarten und als inhalt nur eine endlosschleife beinhalten.

    wie dem auch sei, hoffe das war hilfreich in punkto laufzeit und aufwand von algorithmen.
    gute nacht.

    bye - Idefix!
     
  21. 27. Februar 2007
    AW: Nach Ausführung schließen?

    endlich jemand der ahnung hat, für die erklärung gibts ne bewertung.

    schilder mal genau den vorgang, wie und wann du steam und wie und wann du die spiele startest (aus steam heraus, mit hlsw, läuft steam die ganze zeit im task, etc.).
     
  22. 27. Februar 2007
    AW: Nach Ausführung schließen?

    Ich redete eigentlich vom Speicherverbrauch was man auch sehen koennte wenn man die
    Posts davor gelesen haette.

    Du laesst die meisten Programme in einer Schleife laufen,
    auch in Windows Programmen..

    Bevor man den Mund auffreist lieber doch die Posts davor lesen.

    PS: Soll nicht angreifend wirken, aber mich nervts nur das man seinen Senf dazu gibt ohne die Posts davor gelesen zu haben.
     
  23. 27. Februar 2007
    AW: Nach Ausführung schließen?

    Da dies C++ ist, ist "__cplusplus" auch defined. Also guck dir den Abschnitt lieber nochmal genau an
     
  24. 27. Februar 2007
    AW: Nach Ausführung schließen?

    Dann schau dir mal meinen Code an und guck was es ist, C++ oder C?

    C++ ist Objektorientert,
    C ist Werteorientert.
     
  25. 27. Februar 2007
    AW: Nach Ausführung schließen?

    Jetz kriegt euch mal wieder ein, is doch egal obs nu NULL oder 0 heißt ...

    Aja, und in dem Punkt muss man remaL recht geben: Es werden oft endlosschleifen benutzt (z.B. wenn man mit Sockets arbeitet) oder z.T. auch bei GUIs
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.