Onclick???

  • Hallo Leute.

    Ich bin neu hier, habe direkt eine Frage.

    Ich wollte mir einen All Window Closer schreiben.

    Was er macht: Er zeigt mir die offenen Fenster an, soll sie per klick schließen ect.

    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $AllWindowCloser = GUICreate("All Window Closer", 680, 460, 192, 130)
    $Header = GUICtrlCreateLabel("All Window Closer", 224, 40, 298, 53)
    GUICtrlSetFont(-1, 26, 400, 0, "Comic Sans MS")
    $Marked = GUICtrlCreateButton("Close Marked", 100, 416, 100, 25, 0)
    $All = GUICtrlCreateButton("Close All", 250, 416, 100, 25, 0)
    $Info = GUICtrlCreateButton("Info", 400, 416, 100, 25, 0)
    $Copyright = GUICtrlCreateLabel("© Rubberducky 2008", 528, 8, 125, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Exit = GUICtrlCreateButton("Exit", 550, 416, 100, 25, 0)
    $Task1 = GUICtrlCreateList("", 188, 192, 113, 19)
    $Task2 = GUICtrlCreateList("", 188, 219, 113, 19)
    $Task3 = GUICtrlCreateList("", 188, 247, 113, 19)
    $Task4 = GUICtrlCreateList("", 188, 274, 113, 19)
    $Task5 = GUICtrlCreateList("", 188, 301, 113, 19)
    $Control1 = GUICtrlCreateCheckbox("Control1", 144, 192, 17, 17)
    $Control2 = GUICtrlCreateCheckbox("Checkbox1", 144, 219, 17, 17)
    $Control3 = GUICtrlCreateCheckbox("Checkbox1", 144, 247, 17, 17)
    $Control4 = GUICtrlCreateCheckbox("Checkbox1", 144, 274, 17, 17)
    $Control5 = GUICtrlCreateCheckbox("Checkbox1", 144, 301, 17, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Das ist das was ich bisher hab.... nur das Design ^^

    Meine Frage:

    Wie mache ich:

    1. Das wenn ich auf einen Knopf drück, dass er dann z.B. das Programm schließt (Exit)
    2. Eine Internetseite extern öffnet (URL https://autoit.de/www.meineseite.de)
    3. Mir die offenen Fenster in an bestimmten Stellen mit deeren Namen anzeigt.


    Danke schonmal :)

    Rubberducky

    2 Mal editiert, zuletzt von Rubberducky (23. Juli 2008 um 16:18)

  • Hi,
    und willkommen im Forum.

    1. Das wenn ich auf einen Knopf drück, dass er dann z.B. das Programm schließt (Exit)
    2. Eine Internetseite extern öffnet (URL https://autoit.de/www.meineseite.de)
    3. Mir die offenen Fenster in an bestimmten Stellen mit deeren Namen anzeigt.


    Also, zu 1.
    Es gibt 2 Möglichkeiten, entweder den OneventMode oder den Mode mit Guigetmsg, den du benutzt hast.
    GuiGetMsg heßt, dass er überprüft, was in der GUI passiert ist.
    Jetzt ist das ganze in einer Endloschelife (While 1/Wend)

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    D.h er überprüft immer wieder, ob etwas in der Gui Passiert ist. Jetzt kannst du sagen. In dem Fall ist die Variable $nMsg die GuiGetMsg Funktion. D.h. ich muss also übrprüfen, ob die Variable jetzt etwas bestimmtes enthält. Jetzt können wir zu der Varable wechseln:

    [autoit]

    Switch $nMsg

    [/autoit]


    Es wird also immer wieder überprüft, was passiert. Jetzt kann ich dem Programm sagen, wenn $GUI_EVENT_CLOSE (also das Programm geschlossen wird) dann schließe das Proramm:

    [autoit]

    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit]


    Genauso können wir jetzt sagen, wenn Button Exit ($Exit) dann Exit, also:

    [autoit]

    Case $Exit
    Exit

    [/autoit]


    Genuaso funktioniert das mit der Internetseite aufrufen (Ich schötze mal das soll auf den Button Info). Dann machst du wenn $nMsg = Info-Button dann gehe auf die Seite:

    [autoit]


    Case $Info
    shellexecute("google.de")

    [/autoit]

    Jetzt noch zu 3.
    Du musst halt zuerst die offenen Fenster auslesen.
    Das machst du mit Winlist().

    Dann kannst du mit z.B. GuiCtrlSetData in die Input-Felder die Titel schreiben.
    Mehr kann ich dir jetzt leider nicht sagen, weil jeglich Information fehlt...
    Ich galube das ist ein bisschen komisch geschrieben, aber ich hoffe du kommst zutrecht. ;)

    Einmal editiert, zuletzt von anno2008 (23. Juli 2008 um 00:52)

  • Hi,
    sry, ich hab einen Kopierfehler reigebastelt.

    [autoit]

    Case $Info
    shellexecute("www.google.de")

    [/autoit]

    Und zu dem _IE ... Musst du an den Anfang noch

    [autoit]

    #include <IE.au3>

    [/autoit]

    schreiben...

  • Sorry, wenns jetzt so wirkt, als ob ich euch die Arbeit machen lassen will.

    Nur: Wie lass ich das Programm das auslesen?

    Hab mich versucht:

    [autoit]

    WinList ()

    [/autoit][autoit]

    $Task1 = GUICtrlCreateList("$array[0][0] ", 188, 192, 113, 19)

    [/autoit]

    Für jedes der 5 Felder

    Nur beim Ausführen kommt das $array xx und nicht das Fenster.


    Nebenfrage: Wird das Programm bei klick auf Close marked auch dann nachrücken oder werden maximal 5 anwendungen gezeigt?

    Danke,

    Rubberducky

  • Hi,
    schau mal in die HIlfe.

    Winlist() liefert ein 2-Dimensonales Array.

    Das Beispiel aus der HIlfe ist vielleich auch schon ganz gut:

    [autoit]

    $var = WinList()

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

    For $i = 1 to $var[0][0]
    ; Only display visble windows that have a title
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
    EndIf
    Next

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

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf

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

    EndFunc

    [/autoit]
  • kannst dir evtl auch mal das hier angucken. was dich hierbei interessieren könnte, ist ...

    hier werden alle Fenster die sichtbar sind, in einem Listview dargestellt.

    -> https://autoit.de/index.php?page…46806#post46806

    Code-Schnipsel: "Visible" Fenster dem ListView hinzufügen (Includes fehlen):

    Spoiler anzeigen
    [autoit]


    _GUICtrlListView_DeleteAllItems($ListView1)
    $WinList = WinList()
    For $i = 1 to $WinList[0][0]
    If Not @error Then
    If $WinList[$i][0] <> "" AND IsVisible($WinList[$i][1]) Then
    $ProcessName = _ProcessGetName(WinGetProcess($WinList[$i][0]))
    If $ProcessName = @ScriptName Then
    Else
    _GUICtrlListView_AddItem($ListView1, $ProcessName)
    _GUICtrlListView_AddSubItem($ListView1, _GUICtrlListView_GetItemCount($ListView1) - 1, $WinList[$i][0], 1)
    EndIf
    EndIf
    EndIf
    Next

    [/autoit]