[Frage]Prozess Find/Kill

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [Frage]Prozess Find/Kill

    Hey hab da mal eine frage ..unzwar.


    wenn ich sagen wir mal ein Script Machen das mit einer bestimmten exe gestartet wird,und das da einbinde,soll der Skript die Funktion haben Processkill("der prozess.exe")


    aber es soll natürlich etwas anderes sein unzwar möchte ich ...dass

    Wenn der gewünschte prozess AN ist sich der script closed+Notepad geöffnet wird der meinen Text schreibt und nicht ausgeht ,und falls dan das notepad ausgeht der PC runterfährt.

    Nur weis ich nicht wie der ganze Skript heißt XD

    Quellcode

    1. While 1
    2. If ProzessExist("Der Prozess.exe") then ;nix
    3. Else ProzessClose ("Prozess.exe")
    4. Wend
    5. EndIf
    6. While 1
    7. Run ("Notepad")
    8. Send ("Blablablabla")
    9. Wend
    10. If ProzessClose ("Notepad.exe") Then ;nix
    11. else Shutdown 13
    Alles anzeigen


    ich weiß nicht ob das richtig ist xD
  • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

  • Xemnas;44802 schrieb:


    Nur weis ich nicht wie der ganze command heißt XD
    While 1
    If ProzessExist("Der Prozess.exe") then ;nix
    Else ProzessClose ("Prozess.exe")
    Wend
    EndIf
    While 1
    Run ("Notepad")
    Send ("Blablablabla")
    Wend
    If ProzessClose ("Notepad.exe") Then ;nix
    else Shutdown 13

    ich weis nicht ob das richtig ist xD

    Den Verwendungszweck lassen wir mal außen vor,
    aber:
    Ich kenn mich nicht so gut mit AutoIt aus, aber das scheint mir etwas unsauber programmiert. Wie wärs mit:

    Quellcode

    1. While ProcessExists(...)....WEnd

    Ist sauberer und weniger Code. Beachte, dass ProcessExist meineserachtens mit C geschrieben wird. Außerdem hast du insgesamt was falsch gemacht:
    Mit ProcessClose() schließt du einen Prozess, du fragst nicht ab, ob er geschlossen ist. Von daher dürfte das eine hübsche Error Meldung geben bzw. gar nicht funktionieren, da der Prozess ja nicht existiert, sofern du zur else-Anweisung kommst.

    Beim 2. würd ichs so machen.

    Quellcode

    1. while ProcessExists("notepad.exe")
    2. WEnd
    3. shutdown (13)

    Falls etwas falsch sein sollte, tuts mir Leid, ich bin kein AutoIt Profi,
    aber so in etwa wäre es richtig.

    LG
  • Ich kann Kaisuke nur zustimmen =)

    Und ich muss sagen das dein Skript (Was im Deutschen groß und mit einem "k" geschrieben wird) deinen Prozessor (Was im Englischen mit einem "c" geschrieben wird) so ziemlich, sinnlos schuften lässt wenn du ihn startest =)

    Du hast mehrere Schleifen die kein Ende haben, und es wird alles nach einander ausgeführt und nicht parallel neben einander.

    Crashkurs While-Schleifen :

    Quellcode

    1. While ( [COLOR=LightBlue]>Boolesche Wert<[/COLOR] )
    2. [COLOR=PaleGreen]>Funktionen<[/COLOR]
    3. WEnd


    Die While Schleife hat auch eine Abfrage, und erst wenn bei dieser Abfrage der >Boolesche Wert< der Wert "true" zurück gegeben wird, wird die >Funktionen< ausgeführt, und das wird immer und immer wieder gemacht bis der >Boolesche Wert< "false" zurück gibt.

    Zu >Boolesche Wert< :
    "bool" solltest du mal gesehen haben.
    Das sind die 2 Werte "true" und "false".
    Bei einer If-Abfrage ist das, das selbe. Die Funktionen werden auch nur ausgeführt wenn in der Hauptabfrage (Zwischen "If" und "Then" ) am Ende der boolesche Wert "true" zurück gegeben wird.
  • Quellcode

    1. While 1[COLOR="PaleGreen"] ;; Start Deklaration SCHLEIFE 1[/COLOR]
    2. If ProzessExist("Der Prozess.exe") then ;nix [COLOR="PaleTurquoise"];;Start Deklaration ABFRAGE 1[/COLOR]
    3. Else ProzessClose ("Prozess.exe")
    4. Wend [COLOR="PaleGreen"];; Ende Deklaration SCHLEIFE 1[/COLOR]
    5. EndIf [COLOR="PaleTurquoise"];;EndeDeklaration ABFRAGE 1[/COLOR] [COLOR="Red"]FAIL[/COLOR]
    6. While 1 [COLOR="PaleGreen"] ;; Start Deklaration SCHLEIFE 2[/COLOR] [COLOR="Red"]FAIL[/COLOR]
    7. Run ("Notepad")
    8. Send ("Blablablabla")
    9. Wend [COLOR="PaleGreen"];; Start Deklaration SCHLEIFE 2[/COLOR]
    10. If ProzessClose ("Notepad.exe") Then ;nix
    11. else Shutdown 13
    Alles anzeigen


    Ich würde erstmal diesen "Noobi Skript" hier verbessern bevor du einen Skript bemängelst den man wenigstens ausführen kann x)


    Deine Schleife 1 wird nie enden so das die 2te auch nie anfangen kann um genau so nie zu enden.
    Deine erste Abfrage wird in der Schleife Deklariert und nach ende beendet xO

    Nach der 2ten Schleife kommt eine Abfrage die aber nie ausgeführt werden kann...

    Wenn ich mir deinen Skript so anschaue tut mir dein Compiler schon leid xD

    Bastel dir was neues, aber mit EINER Schleife.
  • While 1 ;; Start Deklaration SCHLEIFE 1
    If ProzessExist("Der Prozess.exe") then ;nix ;;Start Deklaration ABFRAGE 1
    Else ProzessClose ("Prozess.exe")
    Wend ;; Ende Deklaration SCHLEIFE 1

    EndIf ;;Start Deklaration ABFRAGE 1 FAIL

    While 1 ;; Start Deklaration SCHLEIFE 2 FAIL
    Run ("Notepad")
    Send ("Blablablabla")
    Wend ;; Start Deklaration SCHLEIFE 2
    If ProzessClose ("Notepad.exe") Then ;nix
    else Shutdown 13
    Wend

    doch schleife 1 endet doch "WEnd" steht da doch XD
  • Ich habe doch geschrieben, dass die Schleife erst endet wenn der boolesche Wert = "true" ist xO

    Und 1 ist = "true" also wird das ganze unendlich mal wiederholt
    man könnte auch folgendes schreiben :

    Quellcode

    1. $Bla = true
    2. $iCount
    3. While $Bla
    4. ConsoleWrite("Dummschwetzer >.<"&@CTRL)
    5. $iCount = $iCount + 1
    6. if $iCount = 10 then $Bla=false
    7. WEnd


    oder

    Quellcode

    1. While 1
    2. ConsoleWrite("Dummschwetzer >.<"&@CTRL)
    3. $iCount = $iCount + 1
    4. if $iCount = 10 then ExitLoop
    5. WEnd


    Beim ersten wird der Wert von $Bla einfach von "true" auf "false" gesetzt und dann wird die While Schleife automatisch beendet.

    Und beim Zweiten wird die While Schleife durch den Befehl "ExitLoop" beendet.
    Das ist aber keine Funktion mit Parametern sondern ein direkter Befehl das die Schleife die gerade läuft beendet werden soll.


    Also erst denken dann argumentieren xO
    Ich schreibe ja nicht umsonst das deine Schleife nicht beendet wird.

    Die While-Schleife wird nicht durch ein "WEnd" (Was "While End" bedeutet) beendet, sondern durch die oben genannten Methoden.
    Mit "While" und "WEnd" wird nur eine Schleife deklariert.
    Man kann auch anstelle von "While" und "WEnd" auch einfach "Do" und "Until" verwenden, dabei wird genau das gleiche gemacht.

    Quellcode

    1. $Bla = true
    2. $iCount
    3. du
    4. ConsoleWrite("Dummschwetzer >.<"&@CTRL)
    5. $iCount = $iCount + 1
    6. if $iCount = 10 then $Bla=false
    7. until $Bla=false


    Wenn "$Bla=false" ist und was dann den Wert "true" zurück gibt wird die Schleife beendet.
    Jedoch im Gegensatz zur While-WEnd Schleife werden erst die Funktionen ausgeführt und dann wird der boolesche Wert erkundigt um dann somit eventuell die Schleife zu beenden.

    Bei While wird erst der boolesche Wert abgelesen und dann werden die Funktionen ausgeführt, falls der boolesche Wert "false" zurück gibt dann werden die Funktionen also gar nicht ausgeführt und der Skript läuft wieder weiter bis keine Funktionen mehr da sind und der Prozess sich beendet =)

    Ich laber schon kein Mist in Sachen AutoIT, du kannst mir vertrauen x)
  • was haben wir gelacht, erst um hilfe bitten, einen unausgegorenen versuch an quelltext posten zusammen mit einer beschreibung des programmablaufs, die nicht mal ansatzweise von den errungenschaften der logik profitiert.
    UND dann sagen, "ne leute ich mach das schon richtig ihr habt ja keine ahnung was ich machen will"

    richtig, wahrscheinlich wolltest du 2 endlosschleifen nacheinander ausführen .. sry nur chuck norris kann 2 mal bis unendlich zählen, und der wohnt nich in deinem rechner

    aber hey das letzte if tut ja zumindest das was du wolltest, aber das ist wohl eher purer zufall. blöd nur das die letzten zwei zeilen unreachable code sind. und der rest dank falsch verschachtelter while/if nich mal compilierbar is.

    aber hey, wir wissen ja gar nich was du damit bezweckst ..
    also sry nochmal das wir deinen thread mit unserer unwissenheit befleckt haben ...


    man was haben wir gelacht ...

    P.S.: solche threads sind immer ein guter grund seinen account still zu legen und mit nem neuen namen zu beginnen, herr Xemnas xD
  • Wir haben nicht gelacht und werden auch nicht lachen ò.Ó
    Bist du hier jetzt der Mister Disser oda was?

    Du kannst auch gleich was neues anfangen du bist nämlich hiermit direkt bei mir unten durch >.>

    Das ist eine "While" Schleife und keine Endlosschleife.
    Diese schleife kann enden.
    Wenn man das Programm beendet endet die Schleife auch, wenn man sie auf eine boolesche Variable gesetzt hat und diese "false" zurück gibt endet sie auch und wenn man sie einfach mit "ExitLoop" beendet endet sie auch.
    Erst denken, dann reden.

    Besonders wenn man versucht andere nieder zu machen.

    Es war falsch, dass er dachte er kann es.
    Sein Horizont war einfach zu klein, aber er und ich haben in ICQ miteinander gesprochen.
    Und er ist noch ein blutiger Anfänger, der viel lernen muss.
    Und du genau so..
    Wenn hier was total irre ist, kannst du das auch nett sagen und nichtmit ,vor allem noch so doofen, Sprüchen wie "ach was haben wir gelacht" xO
    You tried and failed hard!

    Dieser Bereich dient zu Hilfe.
    Keiner hier ist ein geschulter Professor oder sowas.
    Die meisten haben es durch Hilfe von außen und wenige haben es auch ohne Hilfe an die ersten Etappen der Programmierung geschafft( ich zu mindestens und ich schätze da gibt es noch ein paar =O )

    Niemand hier hat alles in seinem Kopf und ist der Vollprofi in irgendwas, denn alle hier wissen was das Real Life ist.
    Jeder der hier lernt immer weiter, keiner ist am Ende, da sich auch jede Sprache immer weiter entwickelt und vieles neues dazu kommt.
    Ich arbeite mit 5 Jahren mit AutoIt und ich finde immer wieder was neues und lerne auch dazu.

    Also soviel zu eurem Horizont und Vorstellungen...

    Das hier,denk ich mal, wäre geklärt.

    Xemnas, einen Anti-Hack bekommst du nicht hin.
    Wir haben hier viele Tutorials und es werden auch noch welche dazu kommen.