ControlCommand ( SelctCurrentSelection/SelectString ) funktioniert nicht

  • Hallo Zusammen,

    ich bin etwas ratlos. Ich versuche in einem Programm, Einträge aus einer Listbox auszuwählen. Mit ControlCommand ( FindString ) wird mir ohne Probleme die richtige Positon des gesuchten Textes in der Listbox ausgegeben Ein anschließendes ControlCommand mit SelectCurrentString, oder SelectString, setzt jedoch immer den @Error-Code. Der gewünschte Text in der ListBox wird NICHT ausgewählt.

    AutoIt
    Local $hWnd = WinWait("WinTitle", "", 10)
    	WinActivate($hWnd)
    	;~ _WinAPI_SetFocus($hWnd)
    	local $Occurence = ControlCommand($hWnd, "", 1705, "FindString", "Text")
    	local $Output = ControlCommand($hWnd, "", 1705, "SetCurrentSelection", $Occurence)
    	;~ ControlCommand ( $hWnd, "", 1705, "SelectString", "Text")
    	If @error = 1 Then
    		MsgBox($MB_SYSTEMMODAL, "", "Error: Desired Entry not available!")
    	EndIf

    $Occurence liefert also eine gültige und richtige Listenposition zum "Text", während das anschließende Set/Select immer in einen Fehler läuft und keine Wirkung aufweist.
    Hat jemand eine Idee, was hier das Problem sein könnte, oder auch einen Workaround?

    Einmal editiert, zuletzt von EGuhrm (2. Oktober 2015 um 20:53)

  • ist das "e" in $hWnde Absicht?

    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. ;)

  • Das "e" ist wohl beim Kopieren und nachbearbeiten für das Forum hineingerutscht. Würde auch sofort zu einem Laufzeitfehler führen: "undeclared global variable". Habs gleich mal gelöscht.

    Aber gute Augen! Ich hatte es überlesen ...

  • Auch diese Version läuft in eine Fehlermeldung.

    AutoIt
    WinActivate($hWnd)
    	Local $hCtrl = ControlGetHandle($hWnd, "", 1705)
    	MsgBox(0, "Found Handle", $hCtrl)
    	Local $Result = _GUICtrlListBox_SelectString($hCtrl, "Text", -1)
    	If (@error = 1) OR ($Result = -1) Then
    		MsgBox($MB_SYSTEMMODAL, "", "Error: Entry not available!")
    	EndIf

    _GUICtrlListBox_SelectString liefert -1

  • wenn Du jetzt noch ein "ausführbares" Script einstellst, wird es sich auch jemand ansehen.

    So müsste man sich erst eine Umgebung basteln.
    Das wird wohl keiner tun ...

    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. ;)

  • Ja, mache ich gerne, danke für den Hinweis.
    Ich kann nur leider die Sofware nicht mitliefern, die ich fernsteuern will. Habe aber herausgefunden, dass es sich um eine MULTI-Select ListBox handelt. Manuell kann ich einen, zwei ... oder alle Einträge der ListBox selektieren, vielleicht hängt das Problem damit zusammen?
    Gibt es eine Möglickeit, die Multi-Select Option in einer ListBox in einem anderen Fenster abzuschalten? Habe in der Hilfe nichts dazu gefunden, wie sich diese Option nachträglich abschalten lässt, aber einen Test wäre es ja wert ...

  • Irgendwie komme ich nicht weiter. Habe an einer anderen Stelle das Problem, dass ich für ein Edit mit der Window-Info die ID auslesen kann, mit ControlGetHandle auch ein gültiges Handle bekomme.
    Beim Beschreiben mit ControlSetText bekomm ich eine Fehlermeldung zurückgeliefert.
    Beschreiben mit ControlSend funktioniert ebenfalls nicht.
    Habe das ganze daraufhin mit dem WindowDetective genauer untersucht und erhalte die Meldung:
    OS Error: Zugriff verweigert.
    Bild: [Blockierte Grafik: http://img4web.com/view/VAJSHP]
    Hat jemand eine Idee, wie ich hier weiter vorgehen kann?

    2 Mal editiert, zuletzt von EGuhrm (4. Oktober 2015 um 16:35)

  • Dein Script ist bei mir nicht ausführbar. Wird daran liegen, dass dein Script kein Fenster öffnet, dass dein Problem nachstellen kann.
    So wird Hilfe schwierig.
    Wenn du wenigstens erwähnen würdest, wie das Programm und das Control heißt, dann findet sich vll. jemand, der das Programm auch hat.

    Bezüglich "WindowDetective" wird Hilfe auch schwierig, da ich das Programm nicht mal kenne.
    Klingt aber danach, dass das Programm entweder Administrativ gestartet werden sollte, oder es Probleme mit dem auszulesenden Programm hat.

    Alles in allem gibst Du dir zwar Mühe deine Anfragen korrekt zu formulieren, lieferst aber zu wenig Inhalt...
    ;)

    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. ;)