"Windows-Sicherheit" nimmt keine Send-Befehle entgegen

  • Guten Morgen!

    Ich bin gerade dabei eine Installation zu automatisieren, und dabei auf folgendes Problem gestoßen:
    Die Installation läuft soweit fehlerfrei durch, aber an einem besitmmten Punkt öffnet sich ein Fenster, welches auf keinen Befehl reagiert. Sieht so aus:
    [Blockierte Grafik: http://img831.imageshack.us/img831/3172/fenster1.th.png]
    Mein Skript sieht folgendermaßen aus:

    [autoit]

    AutoItSetOption ("WinTitleMatchMode", 2)
    Opt("WinDetectHiddenText", 1)
    Run('msiexec /i "[...]\Smart Product Drivers.msi" /qb+!')
    WinWait("Windows-Sicherheit")
    WinActivate("Windows-Sicherheit")
    Send("{LALT}s")

    [/autoit]


    Das Fenster wird mit WinActivate auch aktiv, allerdings bleibt der Seind-Befehl komplett ohne wirkung. Eigentlich müsste !s ja das Kästchen anhaken. Wenn ich das Fenster anklicke und dann manuell Alt+S drücke, funktioniert das auch.

    Hat eventuell jemand eine Idee? Ich habe die Suchfunktion benutzt, und bin- wie man wahrscheinlich sieht - ein ziemlicher Anfänger, wenn es um AutoIt geht.
    Danke im Voraus für eure Hilfe!

    Boid

    Einmal editiert, zuletzt von boid (16. September 2010 um 11:12)

  • Also zuerst mal Herzlich Willkommen im Foum,

    Dein Problem könntest du wahrscheinlich mit Controlsend() oder Controlclick() lösen.
    Die Control...()-Funtkionen sind für Installations-Automatisierungen sehr gut.
    Ein Fenster muss dann auch nichtmehr im Vordergrund sein.

    Durch klick auf die Funktion kommst du zur Onlinehilfe:

    [autoit]

    Controlclick()
    Controlsend()

    [/autoit]

    Hier noch eine kleine Liste mit Tutorials und Links die dir vielleicht helfen könnten:

    Für den Einstieg

    [Spoiler=Speziellere Themen]
    Videos von McPoldy
    Array Tutorial von BugFix
    Bit Tutorial von BugFix
    Dll Tutorial von BugFix
    RegEx Tutorial von BugFix
    Login + Registrierung über eine MySql-DB [+ Hilfedateien]
    AutoIt und Assembler UPDATE 09.September 2010 AssembleIt
    StringRegExp Tutorial / Reguläre Ausdrücke in AutoIt
    [url='http:/

  • versuch mal mit "Autoit Info Window" (ist im Installationsordner von autoit)
    den Namen des Controls herauszubekommen. Einfach Tool starten und mit der Maus über die Checkbox fahren. Mit Strg-Alt-f kannst Du dann die Anzeige einfrieren.

    Verwende dann den Befehl ControlSend mit den Angaben aus dem Tool

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Erstmal danke für die überaus schnelle Hilfe!

    die beiden Funktionen habe ich auch schon ausprobiert - das Fenster reagiert leider überhaupt nicht. Hier mal ein Screenshot des Window-Info-Tools (ich habe auf den Install-Button geklickt, da das das eigentliche Ziel ist:
    [Blockierte Grafik: http://img163.imageshack.us/img163/6594/fenster2.th.png]

    Mein Code sieht jetzt folgendermaßen aus:

    [autoit]

    AutoItSetOption ("WinTitleMatchMode", 2)
    Opt("WinDetectHiddenText", 1)
    ;Run('msiexec /i "[...]\Smart_Product_Drivers\Smart Product Drivers.msi" /qb+!')
    WinWait("Windows-Sicherheit")
    WinActivate("Windows-Sicherheit")
    ControlClick("Windows-Sicherheit", "", "[Class:Button; INSTANCE:1]")

    [/autoit]

    Der ControlSend-Befehl gestaltet sich als schwierig, weil ich - wie man auf dem screenshot ja sieht - keine controlID bekomme. Alle anderen Fenster über die ich mit dem Info-Tool gehe, haben eine ID. Nur dieses eine eben nicht.

    Weiss jemand weiter?

    Einmal editiert, zuletzt von boid (14. September 2010 um 13:00)

  • Das glaube ich auch mittlerweile. Administrator-Rechte brauche ich dafür nicht, bzw. hab ich schon ausprobiert und es ändert sich leider nix. Stößt AutoIt da tatsächlich an seine Grenzen?

  • Es gibt viele Fenster, die den Send-Befehl ignorieren ;(
    Wie zB. CE oder die WindowsTastur-Hilfe (virtuelle tastatur)..
    Ich weiß nur, dass man es auf jedem Fall mit asm hinbekommt :D , vlt. sogar mit C++ (sehr wahrscheinlich)
    Habe mich aber noch nicht näher mit dem Thema beschäftigt.

    Nur keine Hektik - das Leben ist stressig genug

  • oder schau wo er sich den "Nicht mehr fragen Wert merkt" und den vor dem Setup in der Registry setzen :whistling:

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Was passiert denn wenn du es so eingibst?

    Spoiler anzeigen
    [autoit]

    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:&Installieren; INSTANCE:1]")

    [/autoit]

    Ich kann mir aber net vorstellen, das Windows diese verbietet aber dann die Tastenkombination ALT+I zulässt. :S
    Ich würde es gerne testen nur leider weis ich net wie ich auf die schnelle dieses Fenster bekomme.

    MfG
    Der_Doc

  • Das sieht doch ganz gut aus. Wenn man an das Zertifikat kommt geht das. Das Programm "certutil.exe" ist doch eh auf Windows installiert.
    Ich bin schon auf das Ergebnis gespannt.
    Ich hoffe es wird berichtet und ein Beispiel gezeigt.

    MfG
    Der_Doc

  • Zitat

    "Was passiert denn wenn du es so eingibst?

    Spoiler anzeigen
    [autoit]

    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:&Installieren; INSTANCE:1]")

    [/autoit]


    [...]

    Das habe ich schon versucht - leider ohne Erfolg.

    Ich werde jetzt mal die Methode, die in Forseti's Link beschrieben ist ausprobieren und dann - natürlich - berichten.

  • Ich habe das bei z.b. 3ds max, bei der auch so ein ähnliche Fenster kommt allerdings mit der Frage ob es wirklich ausgeführt werden soll, recht einfach gelöst. Habe parallel zu dem Autoitscript welches die Software installiert noch ein zweites Script gestartet, welches nur dafür da ist diese Meldung zu bearbeiten. Zwar weiß ich nicht warum, aber dieses zweite Autoitscript hat bis jetzt bei allen Programm bei denen ich diese Problem hatte ohne Probleme auf das Fenster zugreifen können und auch send() ect. wurde richtig ausgeführt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Es hat tatsächlich funktioniert. Und zwar mit Hilfe des Links von Forseti - besten Dank noch mal dafür.

    Kurzfassung:

    -Programm bis zum aufpoppen des besagten Fensters installieren,
    - in den Temp Ordner wechseln und das benötigte Zertifikat exportieren
    - Zertifikat in die automatisierte Installation einbauen -> Fenster poppt nicht mehr auf.

    Vielen Dank für die schnellen und zahlreichen Antworten. Wirklich ein Top-Forum! :thumbup: