_ScreenCapture_Capture in Zwischenablage

  • Hallo Forum
    Mit

    Code
    _ScreenCapture_Capture("C:\ Destop\Image.bmp", $X, $Y, $x1,$y1)



    kann ich den Bildausschnitt gespeichert, aber wie, bekomme ich den Ausschnitt direkt in die Zwischenablage bzw. in die Picturebox da eine Zwischenspeicherung zu langsam ist.
    Ob das Bild ein .bmp oder .jpg ist, ist mir egal.
    Was ich machen möchte ist ein vergrößerten Bildausschnitt von der momentanen Mausposition.
    Also eine Art Lupe.
    Mir fehlt komplett der Plan ?(
    Danke für eure Hilfe

  • Wenn du

    [autoit]

    _ScreenCapture_Capture("", $X, $Y, $x1,$y1)

    [/autoit]

    ohne Dateiname aufrufst, bekommst du ein GDI (kein GDI+) Handle zurück. D.h. die Bitmap liegt im Speicher als Rohformat vor.

    Bezgl. der Lupe einfach mal danach suchen.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hi,
    ich weiss nicht, warum Screencaptures gemacht werden, ich machs ohne, einfachstenfalls so:

    [autoit]

    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>

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

    $hgui = GUICreate("Beispiel stretchblt()")
    $hdc_gui = _WinAPI_GetDC($hgui) ;device context GUI
    GUISetState(@SW_SHOW, $hgui) ;GUI sichtbar machen

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

    $hDC_Screen = _WinAPI_GetDC(0) ;DC screen

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

    Do
    $x = MouseGetPos(0) ;Mauskoordinaten
    $y = MouseGetPos(1)
    _WinAPI_StretchBlt($hdc_gui, 0, 0, 400, 400, $hDC_Screen, $x, $y, 50, 50, $SRCCOPY) ;blitten
    Until GUIGetMsg() = -3

    [/autoit]
  • hallo Andy
    danke für deinen Tipp.
    dein Skript gefällt mir gut , nur wie bekomme ich das in eine Picturebox? ?(
    Ich habe in der Gui einige Listenfelder und Inputboxen.
    Eugen
    ach ja muss zugeben das ich anfänger bin.

  • Als Anfänger wagst du dich gleich an was "kompliziertes" heran.

    Ich lerne gerade ASM und lerne auch nur die Basics erst mal.

    Fange doch klein an und steigere dich.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • nun mit Anfänger meinte ich Autoit, Vorbelastet bin ich seid der Zeit von Commandore 64 mit basic und danach etwas Visual Basic 6. Beim 64er war ASM noch einfach. :)

  • Hi,

    Ich habe in der Gui einige Listenfelder und Inputboxen.


    Zeig mal dein Script, damit klar wird, was du überhaupt vorhast.

    Vorbelastet bin ich seid der Zeit von Commandore 64 mit basic und danach etwas Visual Basic 6. Beim 64er war ASM noch einfach.

    ASM ist auch heute noch "einfach". Viel einfacher geht es garnicht. Aber "einfach" ist ja nicht das Ziel.
    AutoIt hat den großen Vorteil der (sehr guten deutschen) Hilfe. Und eine schnelle Community. Wenn du "richtig" fragst und uns auch Material zum Arbeiten zur Verfügung stellst, bleibt die Hilfe sicher nicht aus.

  • Zeig mal dein Script, damit klar wird, was du überhaupt vorhast.


    Hallo Andy
    Hat etwas gedauert da ich das Skript erst etwas aufbereiten musste damit es andere auch lesen können.

    Also das ganze soll ein Werkzeug für Bild - Positionierung werden, welche Bildausschnitte und Positionen in einer Liste abspeichert.
    Diese Liste kann dann mit PixelSearch od. ImageSearch weiter verwendet werden
    Auch Verarbeitung mit Kadmos (OCR) von IrfanView ist irgendwo in meinem Hinterkopf. :whistling:
    Der Skript - Bereich Bildausschnitte habe ich raus genommen da diese einwandfrei funktionieren.
    Nach Fertigstellung werde ich selbst verständlich für alle das ges. Skript ins Forum stellen.
    Bitte um Nachsicht bei meinem Programmierstiel da ich Anfänger bin.
    Ich habe so weit wie möglich es dokumentiert.

    So jetzt aber zu meinem Problem.
    Siehe Skript „Func _maus_Pos_Bild()“ ?(

    Ich habe ein Picurebox welche ich als Lupe benutze um die Maus auf einen Pixel genau zu positionieren. (Pic1)
    Das Bild bekomme ich aus der Zwischenablage ($bak) über „_ScreenCapture_Capture“
    Das Problem dabei, dieses Bild flackert und auch das Fadenkreuz verschwindet. (Bedingt durch die Schleife)
    Die Lösung denke ich, ist eine Kopie von dem Bildausschnitt wo man das Fadenkreuz direkt reinzeichnet und dann erst in der Picturebox anzeigt.
    Das ist aber um einige Nummern zu groß für einen Anfänger wie mich.


    Grüsse Eugen

    Einmal editiert, zuletzt von Eugen (26. März 2015 um 13:15)

  • Schau mal hier, da habe ich die Geschichte mit Fadenkreuz, pixelgenauer Positionierung und Größe, Speichern und Suchen von Bildinhalten schon einmal umgesetzt.
    PushTheButton, ermöglicht Mausklick auf sonst nicht erreichbare Grafiken UPDATE 1.36

    //EDIT
    Die Prospeed.dll braucht man bei heutigen Rechnern nicht mehr, einfach weglassen. Man muss auch im Script nichts ändern, die Bildausschnitte werden auch so in wenigen Millisekunden gefunden.

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (26. März 2015 um 18:02)

  • PushTheButton, ermöglicht Mausklick auf sonst nicht erreichbare Grafiken UPDATE 1.36

    hallo
    gefunden
    Da hast du ein tolles Programm erstellt, super auskommentiert. :thumbup:
    Darf ich einige Teile rauskopieren und bei mir verwenden? Dein Autoren Name bleibt natürlich erhalten.
    An dem werde ich eine Weile zu beißen haben da ich es auch verstehen will. <X
    Danke dir :P
    Eugen

    2 Mal editiert, zuletzt von Eugen (26. März 2015 um 21:15)

  • Ja, natürlich kannst du Programmteile oder Funktionen verwenden, dafür ist doch ein Forum da.

    PushTheButton hätte längst ein kleines Upgrade nötig gehabt bzgl. einer Suchfunktion in ASM, sind ja nur ne Handvoll Befehle. Schaumamal, ob ich am Wochenende mal ne Stunde Zeit erübrige.
    Obwohl die in nativem AutoItcode erledigte Suche idR. schnell genug ist. In Full-HD werden die Buttons aus nicht "direkt" anklickbaren Buttons selbst auf unseren Firmen-Nettops innerhalb von Millisekunden gefunden. Da habe ich mir sowieso angewöhnt, einige hundert Millisekunden zwischen den einzelnen Klicks zu warten, damit das System überhaupt hinterherkommt...