CLASS auslesen von nem Programm

  • Ich hab folgendes Prob. ich will vom derzeit aktiven Programm die main Class auslesen, hab erst gedacht das würde mit WinGetClassList gehn aber der wirft mir nur alle sub class eines Progs aus nicht die main Class.

    Also z.b: bei IE such ich nach der Class IEFrame, aber der spuckt mir alle Programm internen Class aus aber nicht die :(
    also wie bekomme ich IEFrame in dem falle ausgegeben.

  • Moin,

    [autoit]

    $hWnd = GUICreate ('Test-Fenster')
    GUISetState ()

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

    $WndClass = GetClassName($hWnd)

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

    MsgBox (266304, 'Info', $WndClass)
    Exit

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

    Func GetClassName($hWnd)

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

    Local $aRes, $szBuf = DllStructCreate ('char[260]')
    $aRes = DllCall('user32.dll', 'int', 'GetClassName', _
    'hwnd', $hWnd, _
    'ptr', DllStructGetPtr ($szBuf), _
    'int', DllStructGetSize ($szBuf))

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

    Return DllStructGetData ($szBuf, 1)

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

    EndFunc

    [/autoit]


    Gruß
    Greenhorn


  • Morgen zusammen,

    habe ein ähnliches Problem und dieses Skript schon verwendet. Leider spuckt er bei mir immer nur ein leeres Fenster aus und eine Info über AutoIt.

    Hintergrund:
    Durch ein AutoIt Skript soll ein Programm gestartet werden und die Class als Variable eingelesen werden, damit es universell einsetzbar ist.

    Kann mir vielleicht jemand sagen, was ich falsch gemacht haben könnte?

    P.S.: Bin noch absoluter Newbee auf dem Gebiet :S

    Gruß
    Stefan

  • Habe es jetzt erstmal über WinGetClassList gelöst...

    Mir geht es allerdings nur um die Programm-Bezeichnung (app.x.xxxxxxx). Wie bekomme ich das hin, dass ich nur diesen Teil als Variable deklariere?

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Hallo,
    Möglichkeiten...

    [autoit]

    #include <Array.au3>

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

    $test="lskj.oisjfh.app.skjdfg.kjsdfh.ee"
    $application=stringright($test,stringlen($test)-stringinstr($test,"app")+1)
    msgbox(0,"stringright",$application)

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

    $a=stringsplit($test,"app")
    $application="app"&$a[4]
    msgbox(0,"stringsplit",$application)

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

    $application=StringTrimLeft($test,stringinstr($test,"app")-1)
    msgbox(0,"stringtrim",$application)

    [/autoit]


    ciao
    Andy

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (21. August 2009 um 12:13)

  • Hallo Stefan,
    habe eine Mail bekommen, daß du noch ein Problem hast, aber dein Beitrag hier ist weg^^

    Zitat

    Aus

    [autoit]

    ControlClick("Titel","","[CLASS:WindowsForms10.BUTTON.app.0.12ab327; INSTANCE:3]")

    [/autoit]


    soll

    [autoit]

    ControlClick("Titel","","[CLASS:WindowsForms10.BUTTON.$appnr; INSTANCE:3]")

    [/autoit]

    werden.


    naja, ich antworte mal, du warst aber schon auf dem richtigen Dampfer^^

    [autoit]

    ControlClick("Titel","","[CLASS:WindowsForms10.BUTTON."&$appnr&"; INSTANCE:3]")

    [/autoit]


    so?

  • Hallo Andy,

    nochmal vielen Dank für deine Unterstützung.

    Ja du hast recht, ich hatte einen Beitrag erstellt aber da ich die Lösung direkt nach dem Post gefunden hatte, habe ich ihn kurzerhand wieder gelöscht ;)

    Genau die Lösung, die du vorgeschlagen hattest, habe ich erfreulicherweise auch gehabt und es hat funktioniert :) Aber trotzdem nochmal DANKE!

    Gruß
    Stefan

  • Hi,

    Zitat

    ich hatte einen Beitrag erstellt aber da ich die Lösung direkt nach dem Post gefunden hatte, habe ich ihn kurzerhand wieder gelöscht

    Besser wäre es in Zukunft die Lösung zu posten, damit jemand bei einer Suche zu diesem Thema mehr findet wie einen gelöschten Beitrag ;)
    ciao
    Andy

  • Ich gelobe Besserung ;)

    Stehe gerade noch vor einem neuen Problem: Und zwar habe ich das Kürzen eigentlich schon verstanden (war aber wohl ein Trugschluss...). Wollte jetzt einen Pfad (der vom User festgelegt wird) zu einer Datei ohne den Dateinamen darstellen, also nur bis zum Zielverzeichnis.

    Habe bisher folgendes gemacht:

    [autoit]


    $path = GUICtrlRead($importPath)
    $path2 = String($path)
    $trim=StringTrimRight($path2,stringinstr($path2,"xxx.exe"))
    MsgBox(0, "Test", $trim)

    [/autoit]

    Jetzt kürzt er mir den ganzen Pfad irgendwo in der Mitte an einer Stelle die aus meiner Sicht überhaupt keinen Sinn macht... :wacko:

    Kann mir einer helfen, was ich falsch gemacht habe?

    Gruß
    Stefan