Fenster reagiert nicht

  • Hallo,

    ich habe mir ein Script geschrieben, dass die "telephon.cpl"-datei öffnet (Telefon und Modem) und im Reiter "Erweitert" die Konfigurationseinstellung meiner Telefonanlage öffnet ("HiPath TAPI 120..."). Hier muss ich täglich einen Eintrag machen, und anschließend übernehmen.

    Das versuche ich jetzt über AutoIt aber dieses Fenster reagiert auf keinen einzigen Befehl. Ich habe bereits über verschiedene Befehle versucht einzelne Felder (Edit, ComboBox, Button) anzusprechen und es passiert nichts.
    Das Fenster ist auf jeden Fall aktiviert, denn ich kann einzelne Werte über ControlCommand und FindString auslesen.
    Versucht habe ich es bereits mit ControlCommand, ControlSend, ControlClick und auch MouseClick.

    Gibt es irgendwelche Befehle, solche vom Hersteller eingesetzten Fenster (in diesem Fall Siemens) trotzdem anzusprechen und dort Werte zu ändern?

    Danke vorab.

    • Offizieller Beitrag

    Was sagt den die Autoit Windows Info zu deinem Programmfenster?

  • Hallo Raupi,

    die AutoIt Windows Info gibt die Standardinformationen der einzelnen editierbaren Felder an: ComboBox1, Edit1, etc. Ich sehe auch die anderen Infos wie ID, Position, ControlClick Coords, etc.

    • Offizieller Beitrag

    Wenn es sich um Standardcontrols handelt müssen auch die Controlbefehle funktionieren.
    Probleme gibt es nur mit nicht Standardcontrols.

    Kannst du mal dein Scipt posten, vieleicht wird dann dein Fehler klarer?

  • Ich habe meine Versuche mal drin gelassen, damit du siehtst, was ich unter anderem bereits versucht habe:

    Spoiler anzeigen


    ShellExecute("dialer.exe")
    ShellExecute("telephon.cpl")
    WinWait("Telefon und Modem")
    ControlCommand("Telefon und Modem","",12320,"TabRight","")
    ControlCommand("Telefon und Modem","",12320,"TabRight","")
    winwait("Telefon und Modem","Erweitert")
    ControlClick("Telefon und Modem","",1033,"left",1,103,21)
    ControlClick("Telefon und Modem","",1031,"left",1,50,10)
    WinActive("HiPath TAPI 120 V2.0")
    WinWaitActive("HiPath TAPI 120 V2.0","HiPath 3000")
    ;$hipath = ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","FindString",'HiPath 2000')
    ;MsgBox(1,"Test","Der Wert ist" & $hipath)
    ;ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","SetCurrentSelection", 2)
    ;ControlFocus("HiPath TAPI 120 V2.0","","Edit1")
    ;ControlClick("HiPath TAPI 120 V2.0","","Edit1","left",10,9)
    ;$wert = ControlGetText("HiPath TAPI 120 V2.0","","Edit1")
    ;ControlSetText("HiPath TAPI 120 V2.0","","Edit1","50")
    ;$wert = ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","FindString";'HiPath 2000')
    ;MsgBox(1,"Test","Der Wert ist" & $wert)
    ;ControlSend("HiPath TAPI 120 V2.0","",1097,"50")
    ;ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","SelectString",'HiPath 2000')
    ;ControlCommand("HiPath TAPI 120 V2.0","","Button8","Check","")
    ;MouseClick("left",813,722,1)
    ;MouseClick("left",813,461,1)
    ;MouseClick("left",1017,758,1)
    WinWaitClose("HiPath TAPI 120 V2.0")
    WinActivate("Telefon und Modem")
    ControlClick("Telefon und Modem","",1,"left")
    WinActivate("Verbinden über")
    ControlClick("Verbinden über","",2,"left")
    MouseClick("left",609,42)
    MouseClick("left",637,61)
    WinActivate("Verbinden über")
    $name = ControlCommand("Verbinden über","","ComboBox1","FindString",'IP 1')
    ControlCommand("Verbinden über","","ComboBox1","SetCurrentSelection", $name)
    ControlClick("Verbinden über","",1,"left")
    MouseClick("left",1343,603)

  • Das nächste mal bitte in Autoit Tags ;)
    Also du solltest dir mal die definition der einzelnen Funktionen durchlesen damit du auch passende Parameter übergibts. (lassen sich alle aus dem AutoIt Info Tool ablesen)

    ControlClick: wenn du schon die ID eines Controls abgibts, dann keine Koordinaten mehr
    ControlCommand: den classnameNN angeben und nicht irgendeine zahl (zB SysListView323) -> AutoIt Info Tool
    ControlFocus: ID angeben (id ist immer ne Zahl)
    ControlSetText: ID angeben (id ist immer ne Zahl)

    MfG

  • Das nächste mal bitte in Autoit Tags

    Ich habe kein Ahnung, was du meinst.

    Also du solltest dir mal die definition der einzelnen Funktionen durchlesen damit du auch passende Parameter übergibts.

    Wenn ich diese nicht gelesen hätte, hätte ich Sie nicht einsetzen können. Evtl. hätte ich Sie genauer lesen sollen, aber das habe ich.


    ControlClick: wenn du schon die ID eines Controls abgibts, dann keine Koordinaten mehr

    Das ist in der Hilfe leider so nicht erläutert. Die Werte für x und y sind optional, d.h. in meinen Augen können diese, müssen aber nicht mit angegeben werden und da es weder mit der ID noch mit den Koordinaten geklappt hat, habe ich eben Beides versucht. Ich hätte ja auch "left" weglassen können, da es default ist.

    ControlCommand: den classnameNN angeben und nicht irgendeine zahl (zB SysListView323) -> AutoIt Info Tool

    Das ist nicht irgendeine Zahl, das ist die controlID. Statt der ID kann man natürlich auch den ClassnameNN angeben aber Beides funktioniert.

    ControlFocus: ID angeben (id ist immer ne Zahl)

    Hier das gleiche: Entweder die ID (Zahl) oder den ClassnameNN.

    ControlSetText: ID angeben (id ist immer ne Zahl)

    Auch hier geht Beides.

  • Dass die sache mit dem classnameNN als ersatz für die ID funktioniert wusste ich noch gar nicht ^^ - sorry
    Aber bei ControlClick naja...wenn du ihm nen ctrl zum draufklicken und gleichzeitig andere Koos mitgibst das kann nix werden aus reiner Logik ^^

    und Autoit Tags sind die hier: [autoit ][/autoit ] (natürlich ohne die Leerzeichen aber sonst werden sie nicht so angezeigt :P)
    Darin und wie dus schon gemacht hast in einen Spoiler(wenns länger ist) solltest du am besten immer deinen AutoIt Code setzen, da er dann mit Syntax Highliting angezeigt wird, was es anderen leichter macht dir zu helfen

    Deins würde dann so aussehen:

    Spoiler anzeigen
    [autoit]

    ShellExecute("dialer.exe")
    ShellExecute("telephon.cpl")
    WinWait("Telefon und Modem")
    ControlCommand("Telefon und Modem","",12320,"TabRight","")
    ControlCommand("Telefon und Modem","",12320,"TabRight","")
    winwait("Telefon und Modem","Erweitert")
    ControlClick("Telefon und Modem","",1033,"left",1,103,21)
    ControlClick("Telefon und Modem","",1031,"left",1,50,10)
    WinActive("HiPath TAPI 120 V2.0")
    WinWaitActive("HiPath TAPI 120 V2.0","HiPath 3000")
    ;$hipath = ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","FindString",'HiPath 2000')
    ;MsgBox(1,"Test","Der Wert ist" & $hipath)
    ;ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","SetCurrentSelection", 2)
    ;ControlFocus("HiPath TAPI 120 V2.0","","Edit1")
    ;ControlClick("HiPath TAPI 120 V2.0","","Edit1","left",10,9)
    ;$wert = ControlGetText("HiPath TAPI 120 V2.0","","Edit1")
    ;ControlSetText("HiPath TAPI 120 V2.0","","Edit1","50")
    ;$wert = ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","FindString";'HiPath 2000')
    ;MsgBox(1,"Test","Der Wert ist" & $wert)
    ;ControlSend("HiPath TAPI 120 V2.0","",1097,"50")
    ;ControlCommand("HiPath TAPI 120 V2.0","","ComboBox1","SelectString",'HiPath 2000')
    ;ControlCommand("HiPath TAPI 120 V2.0","","Button8","Check","")
    ;MouseClick("left",813,722,1)
    ;MouseClick("left",813,461,1)
    ;MouseClick("left",1017,758,1)
    WinWaitClose("HiPath TAPI 120 V2.0")
    WinActivate("Telefon und Modem")
    ControlClick("Telefon und Modem","",1,"left")
    WinActivate("Verbinden über")
    ControlClick("Verbinden über","",2,"left")
    MouseClick("left",609,42)
    MouseClick("left",637,61)
    WinActivate("Verbinden über")
    $name = ControlCommand("Verbinden über","","ComboBox1","FindString",'IP 1')
    ControlCommand("Verbinden über","","ComboBox1","SetCurrentSelection", $name)
    ControlClick("Verbinden über","",1,"left")
    MouseClick("left",1343,603)

    [/autoit]
  • Das ist wirklich leichter zu lesen. Danke für den Tipp.

    Jetzt sind wir aber mit meinem Grundproblem noch nicht weiter gekommen. Das Fenster will partout nicht reagieren. Normalerweise kann ich mit der Maus in eines der Felder klicken und dort Änderungen vornehmen. Mit den bisherigen Befehlen passiert einfach gar nichts. Das Fenster steht stur im Vordergrund (als gebundenes Popup, man kann also kein anderes Fenster anklicken, bis dieses geschlossen ist).

  • Hier die Summary des ersten Edit-Feldes (Edit1)

    Spoiler anzeigen

    >>>> Window <<<<
    Title:HiPath TAPI 120 V2.0
    Class:#32770
    Position:639, 350
    Size:642, 469
    Style:0x94C808C5
    ExStyle:0x00010101
    Handle:0x00270DBE

    >>>> Control <<<<
    Class:Edit
    Instance:1
    ClassnameNN:Edit1
    Name:
    Advanced (Class):[CLASS:Edit; INSTANCE:1]
    ID:1097
    Text:
    Position:159, 73
    Size:170, 21
    ControlClick Coords:67, 9
    Style:0x50010080
    ExStyle:0x00000204
    Handle:0x00640DB4

    >>>> Mouse <<<<
    Position:873, 462
    Cursor ID:0
    Color:0xFFFFFF

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<
    HiPath 3000

  • Aber bei ControlClick naja...wenn du ihm nen ctrl zum draufklicken und gleichzeitig andere Koos mitgibst das kann nix werden aus reiner Logik ^^

    Zitat von aus Hilfe zu Controlclick

    x [optional] Die x-Position innerhalb des Controls, die geklickt werden soll. Standard ist die Mitte
    y [optional] Die y-Position innerhalb des Controls, die geklickt werden soll. Standard ist die Mitte

    es kann durchaus beides zusammen sinnvoll eingesetzt werden,

    @fleudenberg: es gibt Anwendungen, die sich gegen Automatisierung sperren. Es wundert mich auch, dass diese Anwendung über Nacht die eingestellten Werte vergisst, da wäre es doch sinnvoller dies beim Hersteller zu reklamieren,

    mfg autoBert

  • autoBert
    gut zu wissen danke ^^

    @fleudenberg
    Im Normalfall sollte

    [autoit]

    ControlGetText("HiPath TAPI 120 V2.0","",1097)
    ControlSetText("HiPath TAPI 120 V2.0","",1097,"bla")
    ControlGetText("HiPath TAPI 120 V2.0","","[CLASS:Edit; INSTANCE:1]")
    ControlSetText("HiPath TAPI 120 V2.0","","[CLASS:Edit; INSTANCE:1]","bla")

    [/autoit]


    funktionieren.
    Wobei hier bei ControlGetText nichts zurückkommen wird da kein Text vorhanden ist :P

  • Vielen Dank für die Info autoBert.

    ...da wäre es doch sinnvoller dies beim Hersteller zu reklamieren,

    Daran habe ich natürlich auch schon gedacht. Da das Problem aber erst mit Vista aufgetaucht ist (Bei XP lief es noch reibungslos), gibt es keine Garantie und bei der Telekom ist so eine Viertelstunde Beratung durch ein Remote-Center nicht ganz billig und das wollte ich mit autoIt umgehen, was mir ja auch teilweise gelungen ist.
    Aber nun weiß ich wenigstens, dass es doch Fenster gibt, die einfach nicht reagieren.

  • @Milla


    ControlGetText... funktioniert ja, man kann Werte auch auslesen aber das Fenster ist wie gesagt resistent gegen Änderungen: ControlSetText... bringt keine Änderungen

  • Ich habe ein Hipath-Forum gefunden und dort hat man mir einen Hinweis auf eine neue TAPI 120-Version gegeben, die Ende Oktober raus gekommen ist. Damit habe ich das Problem endlich lösen können.
    Vielen Dank trotzdem für die Hilfen und die Info, dass es Fenster gibt, die nicht auf Automatisierungen reagieren.