StatusbarGetText-Abfrage unvollständig?

  • Hallo,

    in der Active Window Info von AutoIt (au3info.exe) sind im Bereich

    >>>>>>>>>>> Status Bar Text <<<<<<<<<<<<<<<<<<<
    (1):
    (2):
    (3): InfoNr.1
    (4): InfoNr.2

    vier Zeilen, doch der Befehl StatusbarGetText zeigt wohl nur die erste an.

    In meinem Fall (im David InfoCenter) sind leider die ersten 2 Felder leer und erst das 3. + 4. Feld für eine Abfrage zu gebrauchen.

    Wie komme ich in AutoIt da ran?

    Vielen Dank
    Viele Grüße
    Carsten

    P.S: Meinen allerersten Eintrag hier würde ich gerne von offen auf geschlossen ändern. Wenn ich den aber zum Ändern anklicke, kommt die Fehlermeldung das ich nicht eingeloggt bin und gleichzeitig erhalte ich meinen Namen mit der Möglichkeit mich auszuloggen. Was mache ich da falsch? (diesen hier konnte ich mehrfach ändern)

    P.P.S: Sorry gehört eigentlich auch nicht hier her - aber wieso muss ich ein 'neues Thema erstellen' um mein Thema abzuschließen und zu speichern? Das ist ja fast wie in Windows, wo ich 'starten' muss um meinen Rechner abzuschalten :rofl:

    4 Mal editiert, zuletzt von Carsten (29. November 2006 um 19:29)

    • Offizieller Beitrag

    Zum Status-Ändern deines Threads:

    - gaaanz unten auf der Seite deines Threads findest du eine kleine ComboBox: "weitere Optionen"
    - wähle hier: "Thema bearbeiten"
    - jetzt kannst du den Status ändern

    Falls du einen letzen Kommentar hinzufügen willst, erstelle erst deine Antwort UND speichere sie. Gehe dann nochmal in den Thread und setze den Status, wie vorab beschrieben.
    Wenn du deinen Text schreibst und gleichzeitig den Status setzt, wird deine Antwort nicht erstellt - nur die Statusänderung erfolgt.
    (Sollte das inzwischen anders sein, ziehe ich diese Aussage zurück ;) , zumindest war es bei mir so und darum gehe ich diesen Weg)

    Zum Thema "Active Window Info":
    Es kann durchaus sein, dass nicht alle Fenster ihre Infos preisgeben. Vermute, das ist hier der Fall.

  • > Zum Thema "Active Window Info":
    > Es kann durchaus sein, dass nicht alle Fenster ihre Infos preisgeben.
    > Vermute, das ist hier der Fall.

    Aber au3info.exe zeigt doch die zeilen 3 + 4 des StatusBar-Textes an. (habe das nachträglich in meine 'skizze' rein geschrieben) Nur der Befehl gibt nichts aus.

    Gibt es eine Übersicht welche Anzeige aus Au3Info.exe man mit mit welchem Befehl erhält? Oder noch besser ist dieses Programm vielleicht ein AutoIt-Programm und es gibt irgendwo den Quellcode????

    Am besten lerne ich halt doch aus Beispielen......

    Viele Grüße
    Carsten

    Einmal editiert, zuletzt von Carsten (29. November 2006 um 19:31)

    • Offizieller Beitrag

    HI,

    vielleicht hilft dir dies noch ein bißchen weiter:

    Spoiler anzeigen
    [autoit]

    Global $Array = _WinGetCtrlInfo(WinGetTitle(''))
    Global $sOne = '[0][0] = ' & $Array[0][0] & @CR, $sTwo
    For $iCC = 1 To $Array[0][0]
    $sOne &= '[' & $iCC & '][0] = ' & $Array[$iCC][0] & @CR
    $sTwo &= '[' & $iCC & '][1] = ' & $Array[$iCC][1] & @CR
    Next
    MsgBox(64, 'WinInfo', StringTrimRight($sOne, 1) & @CR & StringTrimRight($sTwo, 1))

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

    Func _WinGetCtrlInfo($hWin)
    If IsString($hWin) Then $hWin = WinGetHandle($hWin)
    Local $sClassList = WinGetClassList($hWin), $iAdd, $aDLL, $sHold
    Local $aSplitClass = StringSplit(StringTrimRight($sClassList, 1), @LF), $aReturn[1][2]
    For $iCount = $aSplitClass[0] To 1 Step - 1
    Local $nCount = 0
    While 1
    $nCount += 1
    If ControlGetHandle($hWin, '', $aSplitClass[$iCount] & $nCount) = '' Then ExitLoop
    If Not StringInStr(Chr(1) & $sHold, Chr(1) & $aSplitClass[$iCount] & $nCount & Chr(1)) Then
    $sHold &= $aSplitClass[$iCount] & $nCount & Chr(1)
    $iAdd += 1
    ReDim $aReturn[$iAdd][2]
    $aReturn[$iAdd - 1][0] = $aSplitClass[$iCount] & $nCount
    $aDLL = DllCall('User32.dll', 'int', 'GetDlgCtrlID', 'hwnd', _
    ControlGetHandle($hWin, '', $aSplitClass[$iCount] & $nCount))
    If @error = 0 Then
    $aReturn[$iAdd - 1][1] = $aDLL[0]
    Else
    $aReturn[$iAdd - 1][1] = ''
    EndIf
    EndIf
    WEnd
    Next
    $aReturn[0][0] = $iAdd - 1
    Return $aReturn
    EndFunc

    [/autoit]

    found: Link

    So long,

    Mega

  • Vielen Dank,

    im Moment hilft es nicht weiter. Aber das hätte ich schon öfter gebrauchen können, daher ist es toll das zu wissen...... Danke.

    Mir geht es um ein Erkennen im Tobit-InfoCenter. Während die Angaben in der au3info.exe wechseln, wenn ich ein anderes Verzeichnis auswähle, d.h. ich erkenne in welchem Verzeichnis ich bin (Eingang, Ausgang, ect.) funktioniert das nicht mit o.g. Methode.

    Mein Problem habe ich allerdings anders lösen können: Ich beende das Programm wenn das Fenster nicht mehr aktiv ist. Damit kann ich gut leben. Idealer wäre ein Ende schon beim Wechsel des Tobit-Verzeichnisses.

    Meine Problemlösung ist übrigens eine SPAM-Entfernungshilfe für Tobit. Ich habe das mal hier reingestellt, vielleicht kann's noch jemand gebrauchen. Ich schaue den SPAM-Eingang immer noch ca. 1x/Woche durch zur Sicherheit und bei bis zu 1000 Spams ist das Werkzeug dann ganz hilfreich :)

    Die Funktion ist in der Anlage kurz beschrieben.
    ACHTUNG: Die angezeigten e-Mails werden gelöscht, d.h. vorsichtig testen. Bei mir funktioniert's - eine Haftung übernehme ich natürlich nicht.....

    Spoiler anzeigen

    ; Spam-Entfernungshilfe für Tobit-InfoCenter
    ; Idee: e-Mails mit bestimmten Suchwörtern auswählen und löschen
    ;
    ; ACHTUNG: Eingabetaste löscht alle ausgewählten + angezeigten e-mails !!!!
    ; Idee+Umsetzung: Carsten
    ; Copyright: keins
    ; Haftung: keine


    #Include <Misc.au3>

    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)


    $dll = DllOpen("user32.dll") ; (für _IsPressed)

    $fenstername = "David InfoCenter"
    while 1

    If Not WinActive($fenstername,"") Then
    WinActivate($fenstername,"")
    sleep(800)
    EndIf

    ControlFocus($fenstername,"","RichEdit20A1") ; Ist bei mir das e-Mail-Suchfeld

    while not _IsPressed("0D", $dll) ; Schleife solange ENTER nicht gedrückt
    ToolTip("SPAM-Entfernungshilfe. Eingabe wird erwartet....", 0, 0)
    sleep(200)
    if not WinActive($fenstername) then exit ;; Beenden wenn TOBIT nicht mehr aktiv
    WEnd

    Send("{CTRLDOWN}a{CTRLUP}{DEL}j") ; alle angezeigent markieren + löschen
    sleep(300)
    ControlFocus($fenstername,"","RichEdit20A1") ; Ist bei mir das e-Mail-Suchfeld
    sleep(200)
    Send("{BACKSPACE}")

    WEnd
    Exit

    Viele Grüße
    Carsten