ListViewItem bei Rechtsklick lesen

  • Ich suche nach einer Möglichkeit, ein ListView Item bei einem Rechtsklick darauf aus zu lesen.
    Etwas wie

    Code
    RegisterMenu( $ListViewItem, MsgBox( Auslesen( $ListViewItem)))


    Ist solch etwas möglich?
    Da ich relativ neu mit AutoIt zutun habe, würde ich mich über eine Anfänger freundliche Erklärung freuen. :)
    Danke für kommende Antworten.

    (( Bei Unklarheiten bezüglich der Fragestellung bitte fragen ))

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

    Einmal editiert, zuletzt von ProgrammingDonkey (14. November 2014 um 21:03)

  • Um deine Frage zu klären: Ja, es ist möglich, aber da du noch recht wenig mit AutoIt zu tun hattest, empfehle ich dir erst mit einfacheren Dingen zu beginnen, da du für diese Lösung auf die Windows-Control-Events zurückgreifen musst, die nicht bereits in AutoIt-Variablen versteckt sind...

    Falls du es dennoch versuchen willst -> Das Event ist "NM_RCLICK" und du brauchst ein Gebilde über WM_NOTIFY... ein paar Beispiele lassen sich über Google finden, aber sie zu erklären wird schwierig, da sie sich nicht mehr der "simplen" Funktionen von AutoIt bedienen, sondern mit DLLs arbeiten.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • <p>Ich denke schon, dass ich das irgendwie schaffe. So neu ist es mir auch nicht - Habe bis jetzt halt nur Chatprogramme usw. verfasst.</p>
    Jedenfalls danke für die Antwort.
    Warum steht da oben HTML drinne? :D

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

    • Offizieller Beitrag

    In der Hilfe zu "_GUICtrlListView_Create" steht ein Beispiel. Daraus kann man sich etwas passendes basteln:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Global $g_hListView

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

    Example()

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

    Func Example()
    Local $hGUI, $hImage
    $hGUI = GUICreate("(UDF Created) ListView Create", 400, 300)

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

    $g_hListView = _GUICtrlListView_Create($hGUI, "", 2, 2, 394, 268)
    _GUICtrlListView_SetExtendedListViewStyle($g_hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Load images
    $hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0x0000FF, 16, 16))
    _GUICtrlListView_SetImageList($g_hListView, $hImage, 1)

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

    ; Add columns
    _GUICtrlListView_InsertColumn($g_hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($g_hListView, 1, "Column 2", 100)
    _GUICtrlListView_InsertColumn($g_hListView, 2, "Column 3", 100)

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

    ; Add items
    _GUICtrlListView_AddItem($g_hListView, "Row 1: Col 1", 0)
    _GUICtrlListView_AddSubItem($g_hListView, 0, "Row 1: Col 2", 1)
    _GUICtrlListView_AddSubItem($g_hListView, 0, "Row 1: Col 3", 2)
    _GUICtrlListView_AddItem($g_hListView, "Row 2: Col 1", 1)
    _GUICtrlListView_AddSubItem($g_hListView, 1, "Row 2: Col 2", 1)
    _GUICtrlListView_AddItem($g_hListView, "Row 3: Col 1", 2)

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

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>Example

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

    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    ; Local $tBuffer
    $hWndListView = $g_hListView
    If Not IsHWnd($g_hListView) Then $hWndListView = GUICtrlGetHandle($g_hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    Local $iIndex = DllStructGetData($tInfo, "Index")
    Local $iSubItem = DllStructGetData($tInfo, "SubItem")
    MsgBox(0, 'RMB', 'Index: ' & $iIndex & @CR & 'SubItem: ' & $iSubItem)
    Return 0 ; allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]