Durch verschiedene Wörter verschiedene Befehle aus lösen!

  • Hallo Alle zusammen!


    Ich wollte was basteln als test doch ich komme nicht mehr drauf da mein Kopf voll von anderen Dingen sind!

    und zwar will ich das mein Skript durch wörter verschiedene funktionen auslöst das heißt ich offne zum beispiel den Windows Editor und trage ein mein name und darauf soll dann das skript eine Msgbox sagen hallo wie geht es dir oder ich trage danach ein löschen darauf soll das Skript dann den Papierkorb leeren und so weiter.

    Das Skript soll Aktiv Bleiben mit winwait warten bis der name oder besser gesagt das wort existiert und dann die endsprechene Befehl auslösen.


    wollte mit dem befehl: func basteln und am anfang vom skript wollte ich die namen mit einbauen damit die wörter immer wieder geprüft werden ob das wort existiert und dann den endsprechenes befehl auslöst. das skript soll nicht wenn zum beispiel 5 wörter sind bei einen stehen bleiben und warten sondern immer wieder prüfen ob ein wort dann existiert.

    hier mal ein beispiel:


    [autoit]

    _löschen
    _Mein Name
    _berichts index ;ab hier soll er so lange prüfen bis eines der wörter existiert und die funtcion auslöst aber danach weiter prüfen tut ob ein weiteres wort existiren tut.
    _Sound
    _Programm Starten

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func _löschen ()
    WinWait("","löschen")
    ; befehl auslösen
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func _Mein Name ()
    WinWait("","Mein Name")
    ; befehl auslösen
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func _berichts index ()
    WinWait("","berichts index")
    ; befehl auslösen
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func _Sound ()
    WinWait("","Sound")
    ; befehl auslösen
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func _Programm Starten ()
    WinWait("","Programm Starten")
    ; befehl auslösen
    EndFunc

    [/autoit]

    ja ich habe die while schleife jetzt weg gelassen ich komme jetzt nicht auf dem nenner wie das wahr.


    Bitte um Hilfe

    MfG

    Baron1977

  • Ich hab keine Ahnung ,ob das folgende Script funktioniert, da jeweils nicht der Fenstertitel, sondern der Text angegeben wird.
    Vielleicht kannst du es ja als Ansatz benutzen:

    Spoiler anzeigen
    [autoit]

    Global $Sum = 0
    Dim $Namen[5][2]
    $Namen[0][0] = "_löschen"
    $Namen[1][0] = "_Mein_Name"
    $Namen[2][0] = "_berichts_index"
    $Namen[3][0] = "_Sound"
    $Namen[4][0] = "_Programm_Starten"
    For $i = 0 To 4
    $Namen[$i][1] = 0
    Next
    While True
    $Sum = 0
    For $i = 0 To 4
    If WinExists("", $Namen[$i][0]) Then $Namen[$i][1] = 1
    $Sum += $Namen[$i][1]
    Next
    Sleep(10)
    If $Sum = 5 Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Wichtig!", "Alle Fenster sind nun offen!")

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Ich meinte es nicht das er mir am ende sagt das alle fenster offen wahren sondern wenn ich löschen schreibe das er den papierkorb leert auch wenn ich als 2 mal sagen löschen das er denn papierkorb leert.

    ich möchte es so basteln wenn ich von mein handy unterwegs bin und eine mail an meinen Rechner Schicke das er von zu haus die arbeit ohne mein anwesen ausführt da es für dieses Handy kein tool gibt.

    er soll dann später eine mail auf mein handy zurück geben und mir sagen das der befehl ausgeführt würde.

    Deswegen will ich ja es testen ich könnte mehre skripte laufen lassen für jedes befehl aber es ist besser wenn es nur ein skript gebe


    Gruß Baron

  • könnte einer von euch mein beispiel skript die fehlenen befehle einbauen damit der skript funktioniert.


    das Skript soll dauerhaft aktiv sein und egal was für ein wort eingetragen von der liste den befehl ausführen ohne das der Skript sich schließt oder stehen bleibt die worter sollen nur beim schreiben erkannt werden nicht das der Skript auf die einzelne worte wartet und immer wieder prüft ob das wort oder die wörter auf tauchen.


    ich weiß das es geht !


    Bitte um Hilfe

    MfG

    Baron

  • Woher sollen denn die Befehle gelesen werden? Aus einem beliebigem Programm? Oder aus einem E-Mail-Programm? Oder aus dem Web-Interface des E-Mail-Dienstanbieters?
    Edit: Wenn der Script nicht stehen bleiben soll, dann musst du statt WinWait WinExist benutzen.

    3 Mal editiert, zuletzt von Filin (11. März 2010 um 15:57)

  • Also zum 10 Mal das ganze durchgelesen: wenn der Skript jetzt nicht das macht, was du willst, dann habe ich dein Text ohne Kommas anscheinend doch nicht verstanden.

    Spoiler anzeigen
    [autoit]

    Dim $Namen[5][2]

    [/autoit] [autoit][/autoit] [autoit]

    $Namen[0][0] = 'löschen'
    $Namen[0][1] = '_loeschen'
    $Namen[1][0] = 'Mein Name'
    $Namen[1][1] = '_Mein_Name'
    $Namen[2][0] = 'berichts index'
    $Namen[2][1] = '_berichts_index'
    $Namen[3][0] = 'Sound'
    $Namen[3][1] = '_Sound'
    $Namen[4][0] = 'Programm Starten'
    $Namen[4][1] = '_Programm_Starten'

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 4 Step +1
    If WinExists('', $Namen[$i][0]) Then Call($Namen[$i][1])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _loeschen()
    MsgBox(0, '', 'löschen', 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Mein_Name()
    MsgBox(0, '', 'Mein Name', 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _berichts_index()
    MsgBox(0, '', 'berichtsdingsda', 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Sound()
    MsgBox(0, '', 'Sound', 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Programm_Starten()
    MsgBox(0, '', 'Starte sonstwas', 1)
    EndFunc

    [/autoit]
  • Hallo an Alle !

    Der Letzte eintrag von Filin mit dem Editor wahr genau das Richtige was ich gemeint habe ! :thumbup:

    jetzt wollte ich es peer e-mail Programm auch testen das wenn eine neue Mail kommt mit dem Satz "Mein Name" das er mir auch hier den wert zurück gibt doch es passiert nichts das Skript kann denn namen nicht finden. :?:

    hier habe ich mal ein video was ich meine genau ich endschuldige mich für die schlechte qualität von screencast.com !


    Hier das Video


    Das E-mail programm wo ich es gern zum laufen bringen will heißt Thunderbird .


    Bitte um Hilfe

    Gruß Baron

  • Da das Feld (wo der Text drin steht) nicht direkt mit Controlbefehlen auszulesen ist,
    kannst du es mit einem Workaround lösen:
    Lass die Maus via Mouseclick in das Feld klicken,
    sende mit Send Strg+A (alles markieren) und überprüfe
    mit dem Programm(-ansatz) die Zwischenablage mit clipget.
    Dieser Code sollte den aktiven Text auslesen können:

    [autoit]

    $sTitle = "Posteingang - Mozilla Thunderbird"
    WinWait($sTitle)
    WinActivate($sTitle)
    WinWaitActive($sTitle)
    $pos = ControlGetPos($sTitle,"","MozillaWindowClass11")
    MouseClick("Left",$pos[0]+$pos[2]/2,$pos[1]+$pos[3]/2)
    Sleep(2000)
    Send("^a")
    Sleep(2000)
    Send("^c")
    $Text = ClipGet()
    WinSetState($sTitle,"",@SW_MINIMIZE)
    MsgBox(0,"Ausgelesener Text",$Text)

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!