winkill funktioniert nicht

  • ich habe hier ein fenster (sieht nicht wie ein normales fenster aus, ist so ein statusfenster, was aber beim manuellen aktivieren mit alt-f4 beendet werden kann. ebenfalls hat es ein x rechts oben zum beenden - sonst aber keine windowsleiste) - siehe anlage.

    unter windows xp führt folgendes script einwandfrei zum beenden des fensters:


    Opt("WinWaitDelay", 0)
    while 1
    WinWait("Log")
    WinActivate("Log")
    WinKill("Log")
    WEnd


    unter win 7 (auch mit option #requireadmin) passiert nichts - das fenster bleibt vorhanden. mit autoit window info kann ich das fenster aber "normal" finden mit handle usw.

    jemand eine idee?

  • kein @error bzw. 0

    winwait und winactive geben korrekt das handle zurück (zb 0x00020030)
    winkill und winclose geben 1 (success) zurück
    aber fenster (siehe screenshot oben) ist nach wie vor da

    mit autoit window info kann ich das fenster aber korrekt auslesen...

  • Bin zwar kein AutoIt ass, aber solche Probleme gehe ich etwas "Handelsüblich" an.

    [autoit]

    AutoItSetOption ("MouseCoordMode", 0)
    AutoItSetOption ("WinTitleMatchMode", 2)
    Opt ("WinWaitDelay", 0)
    while 1
    If WinExists ("Log", "") Then
    WinActivate ("Log", "")
    WinWait ("Log", "")
    MouseClick ("left", 278, 7, 1, 0)
    WinWaitClose ("Log", "", 50)
    EndIf
    WEnd

    [/autoit]

    Ich weiss jetzt nicht Ob in While schleifen If eingesetzt werden darf, müsste aber gehen. Ansonsten:

    [autoit]

    AutoItSetOption ("WinTitleMatchMode", 2)
    Opt ("WinWaitDelay", 0)
    while 1
    If WinExists ("Log", "") Then
    WinActivate ("Log", "")
    WinWait ("Log", "")
    Send ("{ALTDOWN}{F4}{ALTUP}")
    WinWaitClose ("Log", "", 50)
    EndIf
    WEnd

    [/autoit]

    6 Mal editiert, zuletzt von Sentionline (29. Juli 2010 um 01:18)

  • Kann ja sein wo es ist. Deswegen stellt man Window Info bei solchen Sachen auf Window. (Options/CoordMode/Window).

    Glaub mir, wenn in diesem Fenster "Log" steht, wird das X gefunden. Hatte ich zuletzt bei vielen installern, die mit Flash Fenstern oder Flash Werbung daher kamen. In diesen erkennt AutoIt sogut wie nix. Solche Installer haben beispielsweise Trillian, ICQ oder MediaCoder. Die position des Fensters ist egal, der wird gefunden.

    mfg

  • und wenn ich euch nun sage, dass keines der Scripte funktioniert...
    und ich nach keinem befehl einen @error bekomme...

  • Wenn das alles nicht hilft dann weiß ich auch nicht mehr weiter.
    Hab ebend noch mal mein Script getestet funzt Tadellos.

    [autoit]

    #Include <SendMessage.au3>
    #include <WindowsConstants.au3>
    $Handle = WinGetHandle("[ACTIVE]")
    ConsoleWrite($Handle & @CRLF)

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

    _SendMessage($Handle,$WM_CLOSE)
    _SendMessage($Handle,$WM_QUIT)

    [/autoit]
  • das glaub ich ja auch, aber was...

    beim script mit _sendmessage auf das handle erhalte ich als ausgabe:
    0x00020166
    >Exit code: 0 Time: 0.611

    es liegt an diesem komischen fenster, was wohl kein "normales" fenster ist.
    seltsam halt nur, dass die scripte unter xp normal funktionieren und unter win7 nicht.

    es kann übrigens jeder, der ein win7 zu hand hat, selbst ausprobieren. einfach logmein free darauf installieren, sich den desktop von einem anderen client aus verbinden und dann dort versuchen, das script auszuführen...

  • ok die frage ist zwar berechtigt, aber ja schon - sonst würde es mir das autoit script beenden *g*

  • hat keiner lust es zu probieren? voraussetzung win7 client und logmein kostenlos registrieren...