Classnames auslesen, aber wie??

  • Hallo,

    wenn man Handles von Fenstern haben möchte, nimmt man ja WinGetHandle. Aber ich möchte gerne die Classnames von den Fenstern bzw. Programmen, gibts da auch ne Funktion? Ich habs mal probiert mit WinGetClassList, aber das liest mir alles Classnames von den Controls von dem Fenster aus, nicht den Classname direkt von dem Fenster.

    Einmal editiert, zuletzt von m-obi (21. Februar 2009 um 16:11)

  • ich häng mich hier mal ran, ich brauch es genau andersrum.
    Ich kenn der Text (Inhalt der Combo-box) aber nicht den Namen oder die ID ?

    Achtung Anfänger! :whistling:

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

  • Dietmar: Versuchs mal damit

    Spoiler anzeigen
    [autoit]

    Global $FensterTitel = 'Fenstertitel'
    Global $Bekannter_Text = 'Diesen Text kenne ich'

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

    Global $Array = _WinGetCtrlInfo(WinGetTitle($FensterTitel))
    Global $sOne = '[0][0] = ' & $Array[0][0] & @CR, $sTwo

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

    For $iCC = 1 To $Array[0][0]
    $sOne &= '[' & $iCC & '][0] = ' & $Array[$iCC][0] & @CR
    $sTwo &= '[' & $iCC & '][1] = ' & $Array[$iCC][1] & @CR
    Next

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

    MsgBox(64, 'WinInfo', StringTrimRight($sOne, 1) & @CR & StringTrimRight($sTwo, 1))

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

    For $i = 1 To $Array[0][0]
    If ControlGetText(WinGetTitle($FensterTitel), "", $Array[$i][0]) = $Bekannter_Text Then MsgBox(64,"Gefunden", $Array[$i][0])
    Next

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

    Func _WinGetCtrlInfo($hWin)
    If IsString($hWin) Then $hWin = WinGetHandle($hWin)
    Local $sClassList = WinGetClassList($hWin), $iAdd = 1, $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]