Fenster wird nicht erkannt, weil es keinen Titel hat

  • hallöchen :)

    Ich versuche ein programm (SpeedCommander) mit AutoIt aufzurufen. Nahc dem Öffnen des programms erscheint ein kleines Fenster zur Eingabe der Seriennummer. Genau diese Eingabe würde ich gerne automatisieren. Leider hat das kleine Fenster keinen Titel und so klappt leider nicht. Kann ich den Titel einfach weglassen? Wie lautet dann die Syntax?

    ControlClick( "", "Text des fensters..", "Button2") funktioniert nicht, da passiert nichts..

    hat jemand eine Idee?

  • habs probiert...
    leider ist das fenster nicht aktiv und Tastatureingaben bringen nichts...

    Einmal editiert, zuletzt von Stefanotis (15. Januar 2007 um 10:55)

    • Offizieller Beitrag

    Hallo!

    Probiers doch mal mit der Window Class.. Öffne mal das window info tool von autoit und guck was da unter "Class:" steht! Dann oben von deinem scirpt Opt("WinGetTilteMod",4) (oder so) reinsetzen und dann z.b. WinSetTitle("class=DIE-CLASS-DIE-BEIM-WINDOW-INFO-TOOL-STEHT","","bla")

    MfG SPider

  • mhh probier mal die Au3Info.exe die du in deinem verzeichnis findest wo du autoit installiert hast....vll bringt die mehr ergebnisse....like scennshot...
    [Blockierte Grafik: http://img113.imageshack.us/img113/9097/sceenersp5.png]

  • Zitat

    mhh probier mal die Au3Info.exe die du in deinem verzeichnis findest wo du autoit installiert hast....vll bringt die mehr ergebnisse....like scennshot...


    Ich habs mit dem Tool probiert, da steht nichts hinter dem Doppelpunkt von "Title" Es gibt irgendwie keinen Titel für das Fenster.

    Zitat

    Hallo!

    Probiers doch mal mit der Window Class.. Öffne mal das window info tool von autoit und guck was da unter "Class:" steht! Dann oben von deinem scirpt Opt("WinGetTilteMod",4) (oder so) reinsetzen und dann z.b. WinSetTitle("class=DIE-CLASS-DIE-BEIM-WINDOW-INFO-TOOL-STEHT","","bla")

    MfG SPider

    Also das habe ich noch nicht so ganz verstanden...was soll ich versuchen?
    Habe das jetzt folgendermaßne interpretiert:

    run("SpeedCommander.exe")
    WinWait("class=#32770", "SpeedCommander 11 ist ein leistungsstarker")
    WinSetTitle("class=#32770", "SpeedCommander 11 ist ein leistungsstarker", "Lizenzeingabe")
    ControlClick("Lizenzeingabe", "SpeedCommander 11 ist ein leistungsstarker", "Button2")

    Leider führt das auch zu keinen Ergebnis...es tut sich nichts

    • Offizieller Beitrag

    Hi,

    versuch es mal damit:

    Spoiler anzeigen
    [autoit]

    ;~ Return values
    ;~ [N][1] = 'Title of Window'
    ;~ [N][2] = 'Handle of Window'
    ;~ [N][3] = 'Text of Window'
    ;~ [N][4] = 'Window Pos X'
    ;~ [N][5] = 'Window Pos y'
    ;~ [N][6] = 'Window ClientSize Width
    ;~ [N][7] = 'Window ClientSize Height
    ;~ [N][8] = 'Window Class List

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

    $aWinArray = _WinGetInfoByPID('Deineexe.exe')
    If IsArray($aWinArray) Then
    For $i = 1 To UBound($aWinArray, 1) - 1
    MsgBox(64, 'Info:', 'The title of window ' & $i & ' is: ' & @CR & $aWinArray[$i][1] & @CR & @CR & _
    'The handle of window ' & $i & ' is: ' & @CR & $aWinArray[$i][2] & @CR & @CR & _
    'The text of window ' & $i & ' is: ' & @CR & $aWinArray[$i][3] & @CR & @CR & _
    'The X Screen Pos of window ' & $i & ' is: ' & @CR & $aWinArray[$i][4] & @CR & @CR & _
    'The Y Screen Pos of window ' & $i & ' is: ' & @CR & $aWinArray[$i][5] & @CR & @CR & _
    'The Client Width of window ' & $i & ' is: ' & @CR & $aWinArray[$i][6] & @CR & @CR & _
    'The Client Height of window ' & $i & ' is: ' & @CR & $aWinArray[$i][7] & @CR & @CR & _
    'The Class List for window ' & $i & ' is: ' & @CR & $aWinArray[$i][8])
    Next
    Else
    MsgBox(64, 'Info:', 'Executable Not Found')
    EndIf

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

    Func _WinGetInfoByPID($sExe)
    Local $aPList = ProcessList(), $iPID
    For $iiCount = 1 To $aPList[0][0]
    If $aPList[$iiCount][0] = $sExe Then
    $iPID &= $aPList[$iiCount][1] & Chr(01)
    EndIf
    Next
    $iPID = StringSplit($iPID, Chr(01))
    If $iPID = 0 Then Return SetError(1, 0, 0)
    Local $aStoreHwndAndText[2][9], $nCount = 1
    $OptWSC = Opt('WinSearchChildren', 1)
    $OptWDHT = Opt('WinDetectHiddenText', 1)
    Local $aWinList = WinList()
    For $iCount = 1 To $aWinList[0][0]
    For $xCount = 1 To $iPID[0]
    If WinGetProcess($aWinList[$iCount][1]) = $iPID[$xCount] And _
    $aWinList[$iCount][0] <> '' Then
    Local $aWinPos = WinGetPos($aWinList[$iCount][1])
    Local $aWinClient = WinGetClientSize($aWinList[$iCount][1])
    $nCount += 1
    ReDim $aStoreHwndAndText[$nCount][9]
    $aStoreHwndAndText[$nCount - 1][1] = $aWinList[$iCount][0]
    $aStoreHwndAndText[$nCount - 1][2] = $aWinList[$iCount][1]
    $aStoreHwndAndText[$nCount - 1][3] = WinGetText($aWinList[$iCount][1])
    $aStoreHwndAndText[$nCount - 1][4] = $aWinPos[0]
    $aStoreHwndAndText[$nCount - 1][5] = $aWinPos[1]
    $aStoreHwndAndText[$nCount - 1][6] = $aWinClient[0]
    $aStoreHwndAndText[$nCount - 1][7] = $aWinClient[1]
    $aStoreHwndAndText[$nCount - 1][8] = WinGetClassList($aWinList[$iCount][1])
    EndIf
    Next
    Next
    Opt('WinSearchChildren', $OptWSC)
    Opt('WinDetectHiddenText', $OptWDHT)
    If $nCount = 1 Then Return SetError(2, 0, 0)
    Return $aStoreHwndAndText
    EndFunc ;==>_WinGetInfoByPID

    [/autoit]

    So long,

    Mega

  • habs probiert und die Zeile 12
    $aWinArray = _WinGetInfoByPID('Deineexe.exe')

    so angepasst:

    $aWinArray = _WinGetInfoByPID('SpeedCommander.exe')

    heraus kommt die MSG: "Executable not found"

    Die*.au3 befindet sich aber im gleichen ordner. Mit "" funktioniert es auch nicht und ohne alles also

    $aWinArray = _WinGetInfoByPID(SpeedCommander.exe)

    gibts einen Error.

    DAnke trotzdem :)

  • Zitat

    Hallo!
    Du möchtest doch sicher nur dein Namen und Serial eintragen warum machst du das nicht gleich im Setup?


    Logisch :D
    Wieso bin ich da nicht selbst drauf gekommen?!

    DANKE!