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. MrB

Beiträge von MrB

  • PS/2 Anschluß loggen

    • MrB
    • 16. Mai 2013 um 09:52

    Hallo zusammen,

    Gibt es eine Möglichkeit mit Autoit den Datenverkehr einer PS/2 Schnittstelle zu loggen. Hab hier einige alte Mitutoyo Meßschrauben. Die Schrauben haben noch den alten DIN Anschluß mit einem Adapter auf PS/2.
    Für die gibt es leider keine passende Schnittstelle mehr.
    Wollte einfach mal schauen was die so senden. Vielleicht ists ja möglich da wieder was zu basteln.
    Mir fehlen da leider die kompletten Basics in Bezug auf PS/2 Kommunikation. Vielleicht gibt´s sowas ja auch schon fertig. Mit Putty,PortMon und Free Serial Monitor bekomm ich´s nicht hin. Liegt wahrscheinlich wieder an meinem Unwissen :( .

    Vielleicht hat ja einer einen Ansatz/Idee usw.

    Dank Euch

    Balti

  • GDIPlus Zeichnen ohne sichtbare GUI

    • MrB
    • 15. Dezember 2012 um 09:53

    Dank dir, hat mich schon weiter gebracht.

    Hab mir mal grad folgendes sinnloses Bsp. zusammen gebastelt. Hab leider grad nicht so viel Zeit.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    HotKeySet("{ESC}", "_Exit")

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

    Global $iWidth = @DesktopWidth
    Global $iHeight = @DesktopHeight
    Global $aTreffer[5][2]

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

    _GDIPlus_Startup()
    Global $hGui = GUICreate("Test", $iWidth, $iHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED, $WS_EX_TRANSPARENT))

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

    Global $tSize = DllStructCreate($tagSIZE)
    Global $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iWidth)
    DllStructSetData($tSize, "Y", $iHeight)
    Global $tSource = DllStructCreate($tagPOINT)
    Global $pSource = DllStructGetPtr($tSource)
    Global $tBlend = DllStructCreate($tagBLENDFUNCTION)
    Global $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 0xFF)
    DllStructSetData($tBlend, "Format", 1)

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

    GUISetState()

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

    $counter = 0
    $left = 1325
    $top = 0
    $right = @DesktopWidth
    $height = @DesktopHeight

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

    Do
    $Search = PixelSearch($left, $top, $right, $height, 0x4CBAEF)
    If Not @error Then
    $aTreffer[$counter][0] = $Search[0]
    $aTreffer[$counter][1] = $Search[1]
    $counter = $counter + 1
    $top = $Search[1] + 1
    _Draw($aTreffer)
    EndIf
    Until @error

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

    While Sleep(10)
    WEnd

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

    Func _Draw($aTreffer)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
    Local $hBitmap = $aResult[6]
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    Local $hPen = _GDIPlus_PenCreate(0xFFAA8800, 10)

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

    For $i = 0 To UBound($aTreffer) - 1
    If $aTreffer[$i][0] <> "" Then
    _GDIPlus_GraphicsDrawArc($hContext, $aTreffer[$i][0], $aTreffer[$i][1], 10, 10, 180, 360, $hPen)
    EndIf
    Next
    _GDIPlus_PenDispose($hPen)

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

    _GDIPlus_GraphicsDispose($hContext)
    Local $hDC = _WinAPI_GetDC($hGui)
    Local $hCDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $hBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Local $hOBJ = _WinAPI_SelectObject($hCDC, $hBMP)

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

    _WinAPI_UpdateLayeredWindow($hGui, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, $ULW_ALPHA)

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

    _WinAPI_SelectObject($hCDC, $hOBJ)
    _WinAPI_DeleteObject($hBMP)
    _WinAPI_DeleteDC($hCDC)
    _WinAPI_ReleaseDC($hGui, $hDC)
    EndFunc ;==>_Draw

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

    Func _Exit()
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Sucht einfach eine beliebige Farbe am Bildschirm und macht einen Kreis an den Fundort. Klappt auch wunderbar, ist auch immer im Vordergrund. Nur wie lösche ich das wieder. Hab leider grad keine Möglichkeit lange zu suchen. Nicht schlimm wenn du keine Lust hast zu antworten. Ich verschieb die Suche dann auf heute Mittag.

    LG
    MrB

  • GDIPlus Zeichnen ohne sichtbare GUI

    • MrB
    • 15. Dezember 2012 um 07:37

    Moin zusammen,

    Befasse mich grad mit GDIPlus und steh da auf´m Schlauch. Wie bekomme ich es hin, dass ich Kreise usw. ohne sichtbare GUI zeichnen kann. Ich möchte in ein Word Fenster direkt auf den Desktop zeichnen, bekomme es aber auch nicht annähernd hin. Kann mir da einer einen Tip, Beispielcode oder sonstwas geben. Hab´s schonmal gesehen, also muß es ja gehen.

    Gruß
    MrB

    P.S.: SuFu mag mich nicht. Finde nix passendes

  • Cursorposition nach Scrollbalkenaktion

    • MrB
    • 22. Oktober 2012 um 18:57

    Moin,


    Kann mir wer sagen, wie ich die aktuelle Cursorposition in einer ChildGui herausfinden kann?


    Hab ein Bild in einer ChildGui welches ich per Scrollbalken schiebe, da viel zu groß. Ich weis leider nicht wie ich die Position im Bild danach heraus finde?


    Einer eine Idee


    LG
    MrB

    Kann gelöscht werden, hab´s grad selber gefunden.

  • Alle Items eines Listviews editierbar

    • MrB
    • 19. Oktober 2012 um 19:03

    Danke, klappt einwandfrei. Man bekommt sogar einzelne Zellen ausgeklammert. Das ist gut ^^

    Glaub hab irgendwann schonmal gefragt, weis aber die Antwort nichtm ehr sicher.
    Zeilenumbruch in einer Zelle möglich?
    Wenn ich mich recht erinnere war der nicht möglich, was doof ist, oder?

  • Alle Items eines Listviews editierbar

    • MrB
    • 19. Oktober 2012 um 18:01

    Hab dazu nichts gefunden. Bezog sich immer nur auf die erste Spalte.

    Wie bekomme ich es hin, dass alle Zellen in folgendem Beispiel bearbeitbar sind (wie Spalte 1) ?

    Habe _GUICtrlListView_EditLabel($hListView, $iIndex) einfach nicht kapiert, da ich den Sinn von $iIndex nicht verstehe. Egal was da steht, es ist immer die komplette erste Spalte editierbar.

    Beispiel aus der Hilfe:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Prüft den Klassennamen (ClassName), der an die ListView-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    Global $hListView

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

    _Main()

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

    Func _Main()
    Local $hImage

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

    GUICreate("ListView: Ändert die Beschreibung von Item 0", 500, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_EDITLABELS, $LVS_REPORT))
    _GUICtrlListView_SetUnicodeFormat($hListView, False)
    GUISetState()

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

    ; Lädt die Bilder
    $hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x0000FF, 16, 16))
    _GUICtrlListView_SetImageList($hListView, $hImage, 1)

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

    ; Fügt die Spalten hinzu
    _GUICtrlListView_InsertColumn($hListView, 0, "Spalte 1", 120)
    _GUICtrlListView_InsertColumn($hListView, 1, "Spalte 2", 120)
    _GUICtrlListView_InsertColumn($hListView, 2, "Spalte 3", 120)

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

    ; Fügt die Items hinzu
    _GUICtrlListView_AddItem($hListView, "Zeile 1: Spalte 1", 0)
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 2", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 3", 2)
    _GUICtrlListView_AddItem($hListView, "Zeile 2: Spalte 1", 1)
    _GUICtrlListView_AddSubItem($hListView, 1, "Zeile 2: Spalte 2", 1)
    _GUICtrlListView_AddItem($hListView, "Zeile 3: Spalte 1", 2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Erlaubt das Ändern der Beschreibung von Item 0
    _GUICtrlListView_EditLabel($hListView, 0)

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW ; Beginn der Änderung der Bezeichnung eines Items
    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
    _DebugPrint("$LVN_BEGINLABELEDIT" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->State:" & @TAB & DllStructGetData($tInfo, "State") & @LF & _
    "-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @LF & _
    "-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @LF & _
    "-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @LF & _
    "-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @LF & _
    "-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @LF & _
    "-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns"))
    Return False ; Erlaubt dem Benutzer, die Bezeichnung zu ändern
    ;Return True ; Verbietet dem Benutzer, die Bezeichnung zu ändern
    Case $LVN_COLUMNCLICK ; Es wurde auf eine Spalte geklickt
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _DebugPrint("$LVN_COLUMNCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    Case $LVN_DELETEITEM ; Ein Item soll gelöscht werden
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _DebugPrint("$LVN_DELETEITEM" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW ; Ende der Änderung der Bezeichnung eines Items
    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
    Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
    _DebugPrint("$LVN_ENDLABELEDIT" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->State:" & @TAB & DllStructGetData($tInfo, "State") & @LF & _
    "-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @LF & _
    "-->Text:" & @TAB & DllStructGetData($tBuffer, "Text") & @LF & _
    "-->TextMax:" & @TAB & DllStructGetData($tInfo, "TextMax") & @LF & _
    "-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @LF & _
    "-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @LF & _
    "-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @LF & _
    "-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @LF & _
    "-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns"))
    ; Wenn das Input-Control nicht leer ist, führt der Rückgabewert True zum Übernehmen des Textes als Itembezeichnung, False verwirft den eingegebenen Text.
    ; Wenn das Input-Control leer ist, wird der Rückgabewert ignoriert
    If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
    Case $NM_CLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste anklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_CLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_DBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste doppelklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_DBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_KILLFOCUS ; Das Control hat den Eingabefokus verloren
    _DebugPrint("$NM_KILLFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    Case $NM_RCLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste anklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_RCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ;Return 1 ; Verhindert die weitere Standard-Nachrichtenbehandlung
    Return 0 ; Erlaubt die weitere Standard-Nachrichtenbehandlung
    Case $NM_RDBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste doppelklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_RDBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_RETURN ; Das Control hat den Eingabefokus und der Benutzer hat die ENTER-Taste gedrückt
    _DebugPrint("$NM_RETURN" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    Case $NM_SETFOCUS ; Das Control hat den Eingabefokus erhalten
    _DebugPrint("$NM_SETFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
    "!===========================================================" & @LF & _
    "+======================================================" & @LF & _
    "-->Zeile(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
    "+======================================================" & @LF)
    EndFunc ;==>_DebugPrint

    [/autoit]
  • Scrollen in der Gui, aber nur ein bestimmter bereich

    • MrB
    • 15. Oktober 2012 um 16:11

    Keiner eine Idee?

  • Scrollen in der Gui, aber nur ein bestimmter bereich

    • MrB
    • 14. Oktober 2012 um 20:27

    Hab ich und klappt auch bis auf einen Punkt.

    [autoit]

    _GUIScrollBars_Init($hChild,2500,2500)

    [/autoit]

    Der erste Wert besagt ja die größe der horizontalen Scrollbar und der zweite die Größe der vertikalen Scrollbar. Da ich einfach mal ein Bild rein gepackt hatte in Originalegröße (2465x1700) fiel mir auf, dass das horizontale Scrollen ohne Probs geht aber das vertikale nicht. Da scroll ich was runter und dann kommt dann einfach kein Bild mehr.
    Außerdem ist der Scrollbalken der vertikalen Bar extrem klein.

    Wie hängen die Werte eigentlich im Bezug zu Pixel zusammen. Da ich horizontal auf 2500 stellen muß damit ich 1700px scrollen kann.

    Mal das Beispiel das ich im Mom verwende:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiScrollBars.au3>
    #include <ScrollBarConstants.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    $gui = GUICreate("Forum ", 633, 447, 190, 220)

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

    GUISetState(@SW_SHOW, $gui)

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

    $hChild = GUICreate("Scrollbereich", 581, 263, 26, 88, $WS_POPUP, $WS_EX_MDICHILD, $gui)

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

    GUISwitch($hChild)
    GUICtrlCreatePic(@ScriptDir & "\Karte.jpg", 0, 0, 2465, 1700)
    GUISetState(@SW_SHOW, $hChild)

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

    GUIRegisterMsg($WM_SIZE, "WM_SIZE")
    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    _GUIScrollBars_Init($hChild, 2500, 2500)

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func WM_HSCROLL($hWnd, $msg, $wParam, $lParam)
    #forceref $Msg, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)

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

    Local $index = -1, $xChar, $xPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

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

    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $xChar = $aSB_WindowInfo[$index][2]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0

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

    ; Ermittelt alle Informationen der horizontalen Scrollbar
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    $xPos = DllStructGetData($tSCROLLINFO, "nPos")
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
    ; Speichert die x-Position für einen späteren Vergleich
    $Pos = $xPos
    #forceref $Min, $Max
    ; Auswertung der vom System gemeldeten Scroll-Nachricht
    Switch $nScrollCode
    Case $SB_LINELEFT ; Der Anwender klickte auf den linken Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

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

    Case $SB_LINERIGHT ; Der Anwender klickte auf den rechten Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

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

    Case $SB_PAGELEFT ; Der Anwender klickte links neben dem Scrollbalken
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

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

    Case $SB_PAGERIGHT ; Der Anwender klickte rechts neben dem Scrollbalken
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

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

    Case $SB_THUMBTRACK ; Der Anwender zog den Scrollbalken
    DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch

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

    ;~ // Setzt die neue Position und ermittelt sie danach erneut.
    ;~ // Abhängig von den Windows-Einstellungen kann es sein, dass die gelesenen Werte nicht die gleichen sind, wie die vorher gesetzten.

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

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    ; // Falls sich die x-Position der Scrollbar geändert hat, den Fensterbereich verschieben und aktualisieren
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")
    If ($Pos <> $xPos) Then _GUIScrollBars_ScrollWindow($hWnd, $xChar * ($xPos - $Pos), 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_HSCROLL

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

    Func WM_VSCROLL($hWnd, $msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

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

    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $yChar = $aSB_WindowInfo[$index][3]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0

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

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

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

    Switch $nScrollCode
    Case $SB_TOP ; user clicked the HOME keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Min)

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

    Case $SB_BOTTOM ; user clicked the END keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Max)

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

    Case $SB_LINEUP ; user clicked the top arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

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

    Case $SB_LINEDOWN ; user clicked the bottom arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

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

    Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

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

    Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

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

    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch

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

    ;~ // Set the position and then retrieve it. Due to adjustments
    ;~ // by Windows it may not be the same as the value set.

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

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")

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

    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
    $yPos = $Pos
    EndIf

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

    Return $GUI_RUNDEFMSG

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

    EndFunc ;==>WM_VSCROLL

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

    Func WM_SIZE($hWnd, $msg, $wParam, $lParam)
    #forceref $Msg, $wParam
    Local $index = -1, $yChar, $xChar, $xClientMax, $xClient, $yClient, $ivMax
    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $xClientMax = $aSB_WindowInfo[$index][1]
    $xChar = $aSB_WindowInfo[$index][2]
    $yChar = $aSB_WindowInfo[$index][3]
    $ivMax = $aSB_WindowInfo[$index][7]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0

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

    Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)

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

    ; Ermittelt die Abmessungen der Arbeitsfläche.
    $xClient = BitAND($lParam, 0x0000FFFF)
    $yClient = BitShift($lParam, 16)
    $aSB_WindowInfo[$index][4] = $xClient
    $aSB_WindowInfo[$index][5] = $yClient

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

    ; Setzt den vertikalen Scrollbereich und die Seitengröße
    DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
    DllStructSetData($tSCROLLINFO, "nMin", 0)
    DllStructSetData($tSCROLLINFO, "nMax", $ivMax)
    DllStructSetData($tSCROLLINFO, "nPage", $yClient / $yChar)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)

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

    ; Setzt den horizontalen Scrollbereich und die Seitengröße
    DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
    DllStructSetData($tSCROLLINFO, "nMin", 0)
    DllStructSetData($tSCROLLINFO, "nMax", 2 + $xClientMax / $xChar)
    DllStructSetData($tSCROLLINFO, "nPage", $xClient / $xChar)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)

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

    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_SIZE

    [/autoit]
  • Scrollen in der Gui, aber nur ein bestimmter bereich

    • MrB
    • 14. Oktober 2012 um 17:35

    Grab den Thread mal aus. Denke da hat sich nicht viel getan.

    Nur eine kurze Frage. Wie bekomme ich den inneren Bereich auch dazu horizontal zu scrollen??

  • Cursor Position mit _IECreateEmbedded() und GUICtrlCreateObj

    • MrB
    • 14. Oktober 2012 um 15:32

    Der Quelltext ist kein Prob

    Spoiler anzeigen
    HTML
    <html>
    
    
    <head>
    <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
    <style type="text/css">
    <!--
    
    
    #box0 {position:absolute; top:50px; left:50px; z-index:1;}
    #box0 a:hover {color:black; }
    #box0 a span {display:none;}
    #box0 a:hover span {position:relative; color:black; background:#ffffff; font:normal 14px courier, sans-serif; display:block; padding:5px; z-index:2;}
    
    
    
    
    #box1 {position:absolute; top:100px; left:100px; z-index:1;}
    #box1 a:hover {color:black; }
    #box1 a span {position:absolute; display:none;z-index:2;}
    #box1 a:hover span {position:relative; color:black; background:#ffffff; font:normal 14px courier, sans-serif; display:block; padding:5px; z-index:3;}
    -->
    </style>
    
    
    </head>
    
    
    <body lang=DE>
    
    
    <div><p class=MsoNormal><img width=2112 height=1457 id="Grafik 1" src="bg.jpg"></p></div>
    <div id="box0"><a tabindex="0"><img width=50 height=50 border=none src="Pics\b1.png"><span>erste Zeile</br>zweite Zeile</span></a></div>
    <div id="box1"><a tabindex="1"><img width=50 height=50 border=none src="Pics\b2.png"><span><h1 style="color:black" lang="de">Willkommen!</h1></span></a></div>
    </body>
    
    
    </html>
    Alles anzeigen

    Zur Sicherheit: Es geht um "bg.jpg" dieses Hintergrundbild. Wie soll man denn zählen, wieviel ich das Bild per Scrollleiste verschiebe um mein Position zu errechnen. Bin mal gespannt

    P.S.: Ich glaub wir reden aneinander vorbei. Ich meine Nicht die Koordinaten der linken oberen Ecke des Bildes. Das ist kein Prob.

    Ich meine die Mauskoordinaten, wo sich der Mauszeiger aktuell auf dem Bild befindet, bezogen auf die linke obere Ecke (da also 0,0). Prinzipiell auch kein Problem, nur sobald das Bild größer wird wie das Objekt und ich das Bild per Scrollleiste verchiebe, komme ich auf keine Position mehr.

  • Cursor Position mit _IECreateEmbedded() und GUICtrlCreateObj

    • MrB
    • 14. Oktober 2012 um 14:11

    Moin zusammen,

    Ach ja, komm mal wieder nicht weiter.

    Ich hab mir folgendes (stark verkürzt) gemacht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>

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

    $hGUI = GUICreate("Test", 1200, 900)
    $oIE = _IECreateEmbedded()
    $GUIActiveX = GUICtrlCreateObj($oIE, 0, 70, 1024, 768)
    _IENavigate($oIE, @ScriptDir & "\Bild.htm")
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Die Bild.htm macht eigentlich nichts anders, wie ein Bild aufzurufen. Dieses ist aber bedeutend größer, wie mein $oIE.

    Mein Problem ist nun, dass ich die Curserposition auf dem Bild brauche, bezogen auf die linke obere Ecke des Bildes. Durch die Scrollleisten verliert man ja mit den Standardmethoden (GUIGetCursorInfo) die Position.

    Hat da einer eine Idee??

    LG
    MrB

  • Gui_Event_Close mit mehreren GUIs

    • MrB
    • 14. Oktober 2012 um 14:00

    Ach ja, ganz vergessen.

    Dank Euch, klappt alles wunderbar

  • Gui_Event_Close mit mehreren GUIs

    • MrB
    • 10. Oktober 2012 um 19:44

    Dank euch allen. Funktioniert alles bestestens.

    Kann mir grad noch einer verraten, wie ich ein Edit dazu bekomme keine waagerechte Scrollleiste sondern nur eine senkrechte Scrolleiste zu haben ? Edit nur deshalb, da Text da raus kopiert werden soll und es senkrecht scrollbar sein soll.

  • Gui_Event_Close mit mehreren GUIs

    • MrB
    • 9. Oktober 2012 um 22:15

    Moin,

    Muss mal eine Frage zu einem Thema stellen, welches ich bis immer versucht habe zu umgehen. Nun will ich´s aber mal wissen.

    Wie wechsel ich zwischen 2 GUIs um den Schließen-Button (das Kreuz ^^) nutzen zu können. Im Moment schließt sich halt alles. Entweder ich steh da total auf´m Schlauch, was öfters vor kommt, oder es ist kompliziert ^^.

    Gebt mir bitte mal einen Tip. GUISwitch klappt nicht

    LG
    MrB

  • Videolänge herausfinden

    • MrB
    • 8. August 2012 um 19:59

    OK, so ist das natürlich auch ne schöne Lösung muss ich sagen. Leider beinhaltet das den Bereich, wovon ich als "ungelernter" Hobby-Scripter nicht viel Ahnung habe (viel = keine ^^). Meine den Spoiler, Rest geht.

    Ich versteh zwar grundsätzlich was da passiert, hätte nur einfach keinen blassen Schimmer wie ich die Infos selber rausbekommen sollte (

  • Videolänge herausfinden

    • MrB
    • 8. August 2012 um 19:30

    eukalyptus
    Sieht interessant aus. Werd ich mir gleich zu Gemüte führen.

    misterspeed
    FFMpeg sollte das auch unterstützen (meine ich zumindestens gelesen zu haben). Hab da garantiert im Syntax einen Fehler. Mal weiter schauen

    Hat einer eine Idee, wie ich den Status eines Kopiervorgangs mit FileCopy bzw. FileMove abfragen kann ? Standard pausiert das Script bei mir bis zum Ende des Vorgangs. FileGetSize usw klappen so also nicht

    Hab grad selbst die Lösung gefunden ! _WinAPI_MoveFileEx ist die Lösung

  • Videolänge herausfinden

    • MrB
    • 7. August 2012 um 20:36

    Bei mir wird die ganze Sache lokal bleiben. Dient nur der Übersicht und Auffindbarkeit. Hänge im Mom allerdings an den Sch.... flv´s. Ich hasse die Dinger. FFMpeg mag da keine Thumbs erstellen bzw. ich muss mal noch mehr in der FAQ lesen

  • Videolänge herausfinden

    • MrB
    • 7. August 2012 um 19:28

    misterspeed

    Unter anderem auch Thumbnailerstellung.
    Warum?

  • Videolänge herausfinden

    • MrB
    • 7. August 2012 um 18:59

    THX eukalyptus

    Genau das hab ich gesucht. Die Funktion funktioniert perfekt (nachdem ich Dost, das mit den Ticks gerallt hatte ^^)

    Dank dir

    misterspeed

    nehme ffmpeg, da ich den sowieso schon benutze

    LG
    MrB

  • Videolänge herausfinden

    • MrB
    • 7. August 2012 um 18:32

    Hallo zusammen,

    Hat einer eine Idee, wie ich mit AutoIt (evtl. auch mit FFMpeg) die Länge eines Videos herausfinden kann.

    Finde einfach nichts bzw. ich hab wieder die falschen Suchwörter

    LG
    MrB

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™