Linksclick abfragen

  • Hi,
    habe ne GUI und möchte wenn ich ein Linksklick drauf gemacht habe, das diese Koordinaten in nem Array gespeichert werden.

    Habe in der Hilfe und mit der SuFu nichts gefunden.

    Ich hoffe ihr könnt mir helfen.

    MfG

    Bladerunner :)

    Einmal editiert, zuletzt von Bladerunner85 (16. Juli 2010 um 11:53)

  • Ich hab mal ne Testgui erstellt und auch (auskommentiert) Rechtsklick hinzugefügt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    HotKeySet("{F2}", "Info") ; F2 gibt die Koordinaten aus, die bereits in dem 2D-Array gespeichert sind
    Dim $Info[1][2]
    $Info[0][0] = 0
    $Info[0][1] = 0
    GUICreate("Test", 400, 400)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $GUI_EVENT_PRIMARYDOWN; Primärtaste (Linksklick 'Down')
    $pos = GUIGetCursorInfo()
    If IsArray($pos) Then
    $Info[0][0] = $pos[0]
    $Info[0][1] = $pos[1]
    TrayTip("Primary down", $pos[0] & " x " & $pos[1], 1)
    EndIf
    #cs
    Case $GUI_EVENT_PRIMARYUP ; Primärtaste (Linksklick 'UP')
    $pos = GUIGetCursorInfo()
    If IsArray($pos) Then
    $Info[0][0]=$pos[0]
    $Info[0][1]=$pos[1]
    TrayTip("Primary UP",$pos[0]&" x "&$pos[1],1)
    EndIf
    Case $GUI_EVENT_SECONDARYDOWN
    $pos = GUIGetCursorInfo()
    If IsArray($pos) Then
    $Info[0][0]=$pos[0]
    $Info[0][1]=$pos[1]
    TrayTip("Secondary down",$pos[0]&" x "&$pos[1],1)
    EndIf
    Case $GUI_EVENT_SECONDARYUP
    $pos = GUIGetCursorInfo()
    If IsArray($pos) Then
    $Info[0][0]=$pos[0]
    $Info[0][1]=$pos[1]
    TrayTip("Secondary UP",$pos[0]&" x "&$pos[1],1)
    EndIf
    #ce
    EndSwitch
    Sleep(10)
    WEnd

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

    Func Info()
    MsgBox(0, "Positionen", "x : " & $Info[0][0] & @CRLF & "y : " & $Info[0][1])
    EndFunc ;==>Info

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Danke für deine Antwort!

    Vlt kannts du mir auch bei meinem neuen Problem helfen:

    Habe wieder eine einfaches GUI und möchte mit GDI+ eine Linie zeichnen.

    Erster Linksklick soll den Startpunkt festlegen und zweiter Linksklick den Endpunkt.

    Bekomme es alleine leider nicht hin.

    MfG

    Bladerunner :)

  • Geht das nicht in die richtung Keylogger?

    wie kommst du den so auf Keylogger???

    wenn er einen Strich zeichnen will, will er gleich nen keylogger bauen?
    ich sehe da keinen zusammenhang

  • Hmmm Zeichenprogramm... So was?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>

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

    Opt ("MouseCoordMode", 2)

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

    $LineCount = 0
    $dll = DllOpen("user32.dll")
    Dim $aLines[99999][4]
    For $i = 0 To UBound($aLines, 1) - 1
    $aLines[$i][0] = ""
    $aLines[$i][1] = ""
    $aLines[$i][2] = ""
    $aLines[$i][3] = ""
    Next

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

    $hWnd = GUICreate("Test", 400, 400)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    DllClose($dll)
    Exit
    Case $GUI_EVENT_PRIMARYDOWN
    While _IsPressed("01", $dll)
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
    For $i = 0 To $LineCount
    _GDIPlus_GraphicsDrawLine($hBuffer, $aLines[$i][0], $aLines[$i][1], $aLines[$i][2], $aLines[$i][3])
    Next
    $Pos = MouseGetPos()
    _GDIPlus_GraphicsDrawLine($hBuffer, $nMsg[3], $nMsg[4], $Pos[0], $Pos[1])
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
    WEnd
    $aLines[$LineCount][0] = $nMsg[3]
    $aLines[$LineCount][1] = $nMsg[4]
    $aLines[$LineCount][2] = $Pos[0]
    $aLines[$LineCount][3] = $Pos[1]
    $LineCount += 1
    EndSwitch
    WEnd

    [/autoit]
  • [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 154)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg(1)
    Select
    Case $nMsg[0]=$GUI_EVENT_CLOSE
    Exit
    Case $nMsg[0]=$GUI_EVENT_PRIMARYDOWN
    MsgBox(0,"","X Pos="&$nMsg[3]&@CRLF&"Y Pos="&$nMsg[4])
    EndSelect
    WEnd

    [/autoit]

    Also ich würd es so machen

  • name22: Ich bin in arrays noch kein meister und deshalb wollte ich fragen, ob du mir erklären kannst, was genau in deinem script passiert, denn ich bin selbst nach so etwas ähnlichem auf der suche.

    MfG