1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Tweaky

Beiträge von Tweaky

  • Edit immer so groß wie GUI

    • Tweaky
    • 1. Juni 2013 um 18:07

    also ein bisschen flackerts noch.
    Wenn im Edit Text drinsteht und man dauern die Enter-Taste gedrückt hält.

    Dies ist zwar minimal, wenn man es jedoch behoben könnte wärs genial :P

  • Edit immer so groß wie GUI

    • Tweaky
    • 26. Mai 2013 um 17:23

    Boah, wie einfach :P
    Darauf wäre ich nie gekommen

    Danke :thumbup:

  • RegExp: Entweder/Oder matchen, und 'False' zurückgeben wenn kein Match

    • Tweaky
    • 26. Mai 2013 um 14:07

    So,
    habe mich mal daran versucht.

    denke es sollte so funktionieren

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <String.au3>
    #include <Array.au3>
    #endregion ;************ Includes ************

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

    GetJobsList()

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

    Func GetJobsList($log_func = True) ; Jobs-Datei parsen
    If $log_func Then _Log('Parse Jobs-Datei')

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

    $file_hwnd = FileOpen(@ScriptDir & '\vdub.txt', 0)
    $file_read = FileRead($file_hwnd)

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

    ; Immer vorhanden - kein Problem
    $para01 = '.*?\$job "(.*?)"\r' ; $job "xxx"
    $para02 = '.*?\$input "(.*?)"\r' ; $input "xxx"
    $para03 = '.*?\$state (\d*)\r' ; state x
    ;~ ; Nicht immer vorhanden - wenn nicht, hätt ich gern einen Platzhalter (zb False) im Array.
    $para04 = '.*?(?:\$error |\$reloadstop )(.*?)\r' ; $error "xxx"
    ; Entweder 05 ODER 06
    $para05 = '.*?(?:ExportViaEncoderSet|SaveAVI)(.*?)\r'

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

    $regexp_array = StringRegExp($file_read, '(?s)(?m)' & $para01 & $para02 & $para03 & $para04 & $para05, 3)

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

    FileClose($file_hwnd)

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

    ;Array richtiggstellen
    For $i = 3 To UBound($regexp_array) - 1 Step 5
    If $regexp_array[$i] = "--" Then
    $regexp_array[$i] = "False"
    Else
    $regexp_array[$i] = StringTrimLeft($regexp_array[$i], 1)
    $regexp_array[$i] = StringTrimRight($regexp_array[$i], 1)
    EndIf
    Next

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

    _ArrayDisplay($regexp_array)
    EndFunc ;==>GetJobsList

    [/autoit]

    Hab ein bisschen tricksen müssen, gerade dort wo du "False" stehen haben willst. Sollte aber passen :D
    "$reloadstop" habe ich nur verwendet, da dies immer existiert. Dies wird dann gefunden, wenn "error" nicht existiert. Könnte auch ein anderer Eintrag sein, jedoch muss er nach "error" und vor "ExportViaEncoderSet" bzw. "SaveAVI" stehen.

  • Edit immer so groß wie GUI

    • Tweaky
    • 26. Mai 2013 um 12:46

    Habs nochmal verbessert.
    Sieht schon besser aus.
    Kann man noch was optimieren :?:
    Beim größer- bzw. kleinerziehen der GUI flackert das ganze ca. 1x pro Sekunde. Bekommt man dies weg :?:

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <Constants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion ;************ Includes ************

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

    ;allgemeine Deklarierung (Notizen)
    Global $hProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hMod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hProc), $hMod)

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

    ;AutoItSetOption
    Opt("GUICloseOnESC", 0) ;1=ESC beendet, 0=ESC schließt nicht
    Opt('GUIOnEventMode', 1)

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

    Global $iBreite_beginn = 200
    Global $iHoehe_beginn = 200
    Global $iHoehe_min = 100

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

    Global $hGui = GUICreate("Notiz", $iBreite_beginn, $iHoehe_beginn, -1, -1, $WS_SIZEBOX, $WS_EX_TOOLWINDOW)
    Global $idEdit = GUICtrlCreateEdit("", 0, 0, $iBreite_beginn - 2, $iHoehe_beginn - 20, BitOR($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))

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

    Global $hEdit = GUICtrlGetHandle($idEdit)
    Global $iFontHeight = _GetFontHeight($hEdit)
    Global $iEditH = $iFontHeight * 2
    _CalcEditSize()

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

    GUISetState()

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")

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

    Func _GetFontHeight($hWnd)
    Local $hDC = _WinAPI_GetDC($hEdit)
    Local $tTEXTMETRIC = DllStructCreate($tagTEXTMETRIC)
    DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $hDC, "ptr", DllStructGetPtr($tTEXTMETRIC))
    _WinAPI_ReleaseDC($hEdit, $hDC)
    Return DllStructGetData($tTEXTMETRIC, "tmAscent")
    EndFunc ;==>_GetFontHeight

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

    Func _CalcEditSize()
    Local $aPos_fenster
    $aPos_fenster = WinGetPos($hGui)

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

    Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
    $iEditH = $iCnt * $iFontHeight
    If $iEditH > $iHoehe_min Then
    WinMove($hGui, "", $aPos_fenster[0], $aPos_fenster[1], $aPos_fenster[2], $iEditH + $iFontHeight + 45)
    EndIf
    EndFunc ;==>_CalcEditSize

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $aPos_fenster

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

    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    ;~ Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)

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

    ;~ If $wParam = $WM_KEYDOWN Then
    ;~ If ($iEditH + $iFontHeight * 2 + 50) > $iHoehe_beginn Then
    ;~ $aPos_fenster = WinGetPos($hGui)
    ;~ _WinAPI_SetWindowPos(_WinAPI_GetFocus(), 0, 0, 0, $aPos_fenster[2], $iEditH + $iFontHeight * 2, $SWP_NOZORDER)
    ;~ EndIf
    ;~ EndIf
    _CalcEditSize()
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

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

    While 1
    Sleep(10)
    WEnd

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

    Func _beenden()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hProc)
    Exit
    EndFunc ;==>_beenden

    [/autoit]
  • Edit immer so groß wie GUI

    • Tweaky
    • 25. Mai 2013 um 11:41

    Hi,
    ich will eine GUI mit einem einzigen Editfeld.
    Dieses soll immer so groß sein wie die GUI.
    Wird beim schreiben eine neue Zeile erreicht, soll sich die GUI samt Editfeld vergrößern.
    Wird eine Zeile gelöscht so soll sich alles verkleinern.
    Es funktioniert eigentlich ganz gut, jedoch wie bekomme ich das Edit genau passend in die GUI?

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <Constants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion ;************ Includes ************

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

    ;allgemeine Deklarierung (Notizen)
    Global $hProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hMod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hProc), $hMod)

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

    ;AutoItSetOption
    Opt("GUICloseOnESC", 0) ;1=ESC beendet, 0=ESC schließt nicht
    Opt('GUIOnEventMode', 1)

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

    Global $iHoehe_beginn = 200

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

    Global $hGui = GUICreate("Notiz", 200, $iHoehe_beginn, -1, -1, $WS_SIZEBOX, $WS_EX_TOOLWINDOW)
    Global $idEdit = GUICtrlCreateEdit("", 0, 0, 200, $iHoehe_beginn, BitOR($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))

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

    Global $hEdit = GUICtrlGetHandle($idEdit)
    Global $iFontHeight = _GetFontHeight($hEdit)
    Global $iEditH = $iFontHeight * 2
    _CalcEditSize()

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

    GUISetState()

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")

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

    Func _GetFontHeight($hWnd)
    Local $hDC = _WinAPI_GetDC($hEdit)
    Local $tTEXTMETRIC = DllStructCreate($tagTEXTMETRIC)
    DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $hDC, "ptr", DllStructGetPtr($tTEXTMETRIC))
    _WinAPI_ReleaseDC($hEdit, $hDC)
    Return DllStructGetData($tTEXTMETRIC, "tmAscent")
    EndFunc ;==>_GetFontHeight

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

    Func _CalcEditSize()
    Local $aPos_fenster
    $aPos_fenster = WinGetPos($hGui)

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

    Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
    $iEditH = $iCnt * $iFontHeight
    If $iEditH + 50 > $iHoehe_beginn Then
    WinMove($hGui, "", $aPos_fenster[0], $aPos_fenster[1], $aPos_fenster[2], $iEditH + $iFontHeight + 50)
    EndIf
    EndFunc ;==>_CalcEditSize

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $aPos_fenster

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

    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    ;~ Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)

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

    If $wParam = $WM_KEYDOWN Then
    If ($iEditH + $iFontHeight * 2 + 50) > $iHoehe_beginn Then
    $aPos_fenster = WinGetPos($hGui)
    _WinAPI_SetWindowPos(_WinAPI_GetFocus(), 0, 0, 0, $aPos_fenster[2], $iEditH + $iFontHeight * 2, $SWP_NOZORDER)
    EndIf
    EndIf
    _CalcEditSize()
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

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

    While 1
    Sleep(10)
    WEnd

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

    Func _beenden()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hProc)
    Exit
    EndFunc ;==>_beenden

    [/autoit]

    EDIT: Habs ein bisschen optimiert, aber immer noch nicht gut genug :S

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 14. Mai 2013 um 18:24

    Also ich lasse dann doch alles bei alten und frage die markierten Elemente in der While Schleife ab.
    Das geht mir dann doch ein wenig zu weit.

    Aber Danke BugFix, vielleicht kann ichs später mal gebrauchen 8o

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 13. Mai 2013 um 20:44

    Puuh, jetzt steht ich total auf dem Schlauch.
    Ich kann doch mit der Shift+Pfeiltasten mehrere Einträg auswählen.
    Muß ich dann die Shift-Taste auch noch abfragen?
    Oder ist das alles dann doch zu aufwendig?

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 13. Mai 2013 um 20:16

    Achso das ist so gewollt :huh:
    Ändern kann man dies nicht oder?

    Also müsste ich es einfach -1 (wenn Pfeil hoch) bzw. +1 (wenn Pfeil runter) verrechnen :?:
    Wobei ich dann nicht erkenne, wenn mehrere Einträge ausgewählt werden ?(

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 13. Mai 2013 um 20:08

    Also dann so.

    Allerdings scheint es wohl nicht ganz zu funktionieren.

    Es scheint so zu sein, als ob der Tastendruck immer um einen Befehl verspätet kommt.

    Folgendes mal testen:
    Zahl 1 anklicken >>> Console = 0
    Pfeil runter (2) >>> Console = 0 ;warum???
    Pfeil runter (3) >>> Console = 1 ;warum???

    Weisst du was ich meine BugFix?


    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #endregion ;************ Includes ************

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

    OnAutoItExitRegister('OnAutoItExit')

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

    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

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

    Global $Form1 = GUICreate("Test", 400, 300)
    Global $ListView = GUICtrlCreateListView("Test", 20, 20, 300, 200, $LVS_SHOWSELALWAYS)

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

    For $i = 1 To 10
    GUICtrlCreateListViewItem($i & "|" & Random(0, 10, 1), $ListView)
    Next
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

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

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView Then
    Switch $code
    Case $NM_CLICK ;klick
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS, $vkCode
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If ControlGetFocus($Form1) <> 'SysListView321' Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If $wParam = $WM_KEYDOWN Then
    Switch $vkCode
    Case 0x26 ;Pfeil hoch
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    Case 0x28 ;Pfeil runter
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]
  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 13. Mai 2013 um 19:45

    Ok,
    der Vollständigkeithalber nochmal das komplette Skript für alle die sowas auch mal brauchen :P

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #endregion ;************ Includes ************

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

    OnAutoItExitRegister('OnAutoItExit')

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

    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

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

    Global $Form1 = GUICreate("Test", 400, 300)
    Global $ListView = GUICtrlCreateListView("Test", 20, 20, 300, 200, $LVS_SHOWSELALWAYS)

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

    For $i = 1 To 10
    GUICtrlCreateListViewItem($i & "|" & Random(0, 10, 1), $ListView)
    Next
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

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

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView Then
    Switch $code
    Case $NM_CLICK ;klick
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS, $vkCode
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If ControlGetFocus($Form1) <> 'SysListView321' Then Return
    $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If $wParam = $WM_KEYDOWN Then
    Switch $vkCode
    Case 0x26 ;Pfeil hoch
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    Case 0x28 ;Pfeil runter
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    EndFunc ;==>_KeyProc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Danke BugFix :thumbup:

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 12. Mai 2013 um 22:44

    OK, wiedermal wow :thumbup:

    Habs mal für meinen Fall umgebaut

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #endregion ;************ Includes ************

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

    OnAutoItExitRegister('OnAutoItExit')

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

    Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)
    Global $hHook2 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

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

    Global $Form1 = GUICreate("Test", 400, 300)
    Global $ListView = GUICtrlCreateListView("Test|Test", 20, 20, 300, 200, $LVS_SHOWSELALWAYS)

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

    For $i = 1 To 10
    GUICtrlCreateListViewItem("|" & $i & "|" & Random(0, 10, 1), $ListView)
    Next
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

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

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView Then
    Switch $code
    Case $NM_CLICK ;klick
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS, $vkCode
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If ControlGetFocus($Form1) <> 'SysListView321' Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If $wParam = $WM_KEYDOWN Then
    Switch $vkCode
    Case 0x26
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    Case 0x28
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    _WinAPI_UnhookWindowsHookEx($hHook2)
    DllCallbackFree($hStub_KeyProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Sollte so passen oder?

    Würdest du WM_NOTIFY für die Mausklick weiterverwenden oder stattdessen _MouseProc :?:
    Würdest du diese Methode immer der ständigen Abfrage in der While-Schleife vorziehen :?:

  • ListView - WM_NOTIFY Markierung

    • Tweaky
    • 12. Mai 2013 um 22:05

    Hi,
    mit WM_NOTIFY kann ja abgefragt werden, wenn sich die markierten Elemente durch einen Mausklick ändern.
    Geht dies auch wenn dies z. B. durch die Tastatur (Pfeiltasten) passiert :?:

    Spoiler anzeigen
    [autoit]

    #region ;************ Includes ************
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #endregion ;************ Includes ************

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

    $Form1 = GUICreate("Test", 400, 300)
    $ListView = GUICtrlCreateListView("Test|Test", 20, 20, 300, 200, $LVS_SHOWSELALWAYS)

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

    For $i = 1 To 10
    GUICtrlCreateListViewItem("|" & $i & "| aaaaaaaaaaaaaa|" & Random(0, 10, 1), $ListView)
    Next
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

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

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView Then
    Switch $code
    Case $NM_CLICK ;klick
    ConsoleWrite(_GUICtrlListView_GetSelectedIndices($ListView) & @CRLF)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • StringReplace

    • Tweaky
    • 6. Mai 2013 um 20:50

    Für ein Stück Quellcode wären wir auch dankbar ;)
    Schließlich hast du ja schon was probiert. Also zeig mal.
    Das sollte doch eigentlich in "Hilfe & Unterstützung rein".

  • SciTEVersion vom 05.04.2013 verwendbar?

    • Tweaky
    • 5. Mai 2013 um 17:14

    OK, dann bleibe ich wohl noch bei der "alten" Version.
    Eine Beta nutze ich ja nicht.

    Das markieren aller gleichen Textstellen finde ich im Gegensatz zu BigRox genial und würde darauf nicht mehr verzichten wollen ;)

  • SciTEVersion vom 05.04.2013 verwendbar?

    • Tweaky
    • 5. Mai 2013 um 12:43

    Hi,
    momentan verwende ich AutoIt 3.3.8.1 und SciTE 10.06.2012.
    Soweit läuft alles.

    Nun habe ich entdeckt, dass es einen neue SciTE-Version vom 05.04.2013 gibt.

    Kann man die verwenden?
    Gibt es Vorteile/Nachteile?

    Postet einfach eure Erfahrungen mit dieser Version. :)

  • _GDIPlus_Startup /_ShutDown innerhalb von UDF

    • Tweaky
    • 4. Mai 2013 um 15:48

    Zusammenfassend:
    Also ist die Funktion von BugFix nicht notwendig.
    Ich werde den Hinweis in die Hilfe aufnehmen.

    Zitat

    Innerhalb der Funktion _GDIPlus_Startup wird automatisch geprüft, ob GDIPlus bereits gestartet ist.
    Somit wird verhindert, dass GDIPlus mehrfach gestartet wird.

  • Deutsche Hilfe - Neue Dateien 3.3.8.1 - mitmachen

    • Tweaky
    • 28. April 2013 um 17:58

    Auf gehts die letzten paar Dateien schaffen wir auch noch :!:

  • http://translation.autoit.de/hilfe.php nicht erreichbar

    • Tweaky
    • 26. April 2013 um 19:39

    nein :S

  • Fenster im Vordergrund

    • Tweaky
    • 17. April 2013 um 21:52

    Hi,
    wie kann ich sicherstellen, dass meine GUI immer im Vordergrund ist.

    Spoiler anzeigen
    [autoit]

    #Region ;************ Includes ************
    #include <GUIConstantsEx.au3>;~~~;~~~
    #include <WindowsConstants.au3>;~~~;~~~
    #EndRegion ;************ Includes ************

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

    GUICreate("Meine GUI", 200, 200, -1, -1)
    WinSetOnTop("Meine GUI", "", 1)
    GUISetState(@SW_SHOW) ; Zeigt das leere GUI-Fenster

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]

    Mit WinSetOnTop geht es am Anfang zwar, jedoch kommt es nach einiger Laufzeit vor, dass sich andere Fenster "davorschieben".
    Wie umgehe ich dies am besten?

  • http://translation.autoit.de/hilfe.php nicht erreichbar

    • Tweaky
    • 17. April 2013 um 21:38

    Die Seite geht schon länger nicht mehr.
    Das was du suchst, findest du in meiner Signatur.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™