AutoIt wird blockiert

  • Hi =)
    Folgendes Problem:
    Bei Windows7 gibt es einige Programme, die automatisch als Administrator gestartet werden. Dabei passiert es, dass sich ein Fenster öffnet, das noch mal eine Genehmigung vom User fordert. In diesem Moment kann jedoch AutoIt, zumindest visuell, nichts mehr machen => MouseMove z.B.
    Kann man dies umgehen? Oder muss man sowas in Windows7 direkt umstellen? (sodass diese Meldung erst gar nicht kommt)
    Und wieso kommt eig. diese Meldung überhaupt immer? Bei XP war das ja nicht so :)


    €dit:
    Frage 2:

    [autoit]

    HotKeySet ("{SPACE}", "_Test")

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

    While (1)
    Sleep(1000)
    WEnd

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

    Func _Test()
    ;HotKeySet ("{SPACE}")
    Send("Hi, was geht?")
    ;HotKeySet ("{SPACE}", "_Test")
    EndFunc

    [/autoit]

    Wieso schreibt er immer wieder "hi, was geht?", wenn man nur EIN MAL Space gedrückt hat? :)
    Er müsste doch aus der Whileschleife oben nur ein mal rausspringen in die Funktion und dann wieder zurück in die Whileschleife, oder? Man, bin ich ein Anfänger :D

    Lächel, du kannst sie nicht alle töten.

    2 Mal editiert, zuletzt von masterRobb (30. Dezember 2010 um 01:28)

  • weil sonst ein Programm nicht mehr laufen könnte... also während dieses Fenster offen ist => also um Erlaubnis zum öffnen fragt , macht AutoIt nichts mehr visuelles, es kann nicht den Mauszeiger bewegen/klicken (vermutlich aus Sicherheitsgründen oder so?) | Aber bei XP kommt dieses Fenster ja nicht ein mal

    Nun, wenn ich jetzt will, dass mein Programm automatisch auf den "ja"-Button drückt, dann würde das nicht gehen. Zumindest nicht mit meinen Kenntnissen :)
    [Mich nerven diese Meldungen immer ;D]

    Lächel, du kannst sie nicht alle töten.

  • Systemsteuerung -> Benutzerkonten -> Einstellungen für Benutzerkontensteuerung -> Slider nach unten ziehen -> UAC ist aus Meldungen kommen nicht mehr.
    Ich denke mal die Meldungen meinst du

  • okay, danke! :D
    Und wie könnte man so was eig. programmtechnisch umgehen? gar nicht oder? :)
    Ich bin echt zu neugierig :D
    Und wozu dient das eig.? Dieses "Als Admin. ...-Sicherung" ... :)

    Lächel, du kannst sie nicht alle töten.

  • Wieso hast du diese 2 Zeilen auskommentiert? Die sorgen doch dafür, dass nur einmal die Funktion aufgerufen wird. :huh:

    [autoit]

    HotKeySet ("{SPACE}", "_Test")

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

    While (1)
    Sleep(1000)
    WEnd

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

    Func _Test()
    HotKeySet ("{SPACE}")
    Send("Hi, was geht?")
    HotKeySet ("{SPACE}", "_Test")
    EndFunc

    [/autoit]
  • ja, ich weiß - ich wüsste nur gerne warum das so ist :D
    Wie arbeitet das Programm?

    Ich dachte ja immer so:
    Hotkeayset = Information

    dann schläft er immer und immer wieder
    irgendwann mal drückt jemand Space
    dann geht er in die Funktion rein (in meinem Fall "Send ("Hi, was geht?"))
    danach geht er wieder in die Whileschleife...

    so dachte ich wäre das immer,... so ist es ja aber scheinbar nicht, sonst würde das Programm das ja nicht immer wieder schreiben :)

    €dit:

    [autoit]


    HotKeySet ("{F10}", "_Test")

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

    While (1)
    Sleep(1000)
    WEnd

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

    Func _Test()
    Send("Hi, was geht?")
    EndFunc

    [/autoit]


    => da klappt es ja auch - wieso ist das bei Space anders? :D

    Lächel, du kannst sie nicht alle töten.

  • Send simuliert auch nur Tastatureingaben, und HotKeySet kann ja nicht wissen ob sie von dir oder einem Send Befehl stammen. Also wird, sobald ein Leerzeichen in dem String der Send Funktion steht, die Funktion erneut aufgerufen und das ganze geht dann wieder von vorne los, was in der Endlosschleife resultiert. ;)

  • HotKeySet aktiviert bei Druck auf den gebunden HotKey die angegebene Funktion.
    Von Send() gesendete String werden auch von HotKeySet erkannt.

    Dein Program läuft in etwa so ab:

    Es schläft dauerhaft wiederholend 1 Sekunde, doch wenn man nun F10 drückt
    springt das Programm in die Testfunktion und führt aus was dort steht.
    Wenn es damit fertig ist springt macht es weiter wo es vorher war, der Schleife.

    Doch wenn nun der HotKey auf Space gesetzt wurde läuft es beim Funktionsaufruf etwa so ab:
    Space wurde gedrückt
    gehe in Funktion "_Test"
    Sende "H"
    Sende "i"
    Sende ","
    Sende " "
    HotKey wurde erkannt
    gehe in Funktion "_Test"
    Sende "H"
    und so weiter

  • An alle Windows Vista-Hasser da draußen, die sich über die UAC aufregen!

    Oft hört man das Argument: Vista ist scheiße, der nervt immer mit Fragen, ob ich ein Programm wirklich öffnen will.... Das zeugt von Nicht-Wissen. Gerade bei eingefleischten Ubuntulern regt mich diese Bemerkungen besonders auf! Warum? Hat mal jemand unter GNU/Linux versucht (spez. Ubuntu) sudo ohne Nachfrage, bzw. besser passend gksudo auszuführen?!?

    Die UAC ist eine Sicherheitsfunktion, die Programmen nur mit Erlaubnis des Administrators erlaubt, auf System-Ressourcen zuzugreifen. Ist man kein Administrator fragt sie auch nach einem entsprechenden Passwort.

    Nun, warum kann AutoIt nicht einen Mausklick simulieren? Ganz einfach, dann könnte ein Programmstarter, der ein "böses" Programm startet doch einfach den Dialog durch Klicken umgehen. Und damit wär die UAC sinnlos (übrigens gibt es diese Sicherung unter Ubuntu nicht, so weit ich das weiß).

    Also: Lasst die bitte angeschaltet, auch wenn sie angeblich nerven soll. Bei einer Firewall wird auch kein Kompromiss eingegangen. Und das ist auch gut so.